-
백준 10216번 풀이백준 2018. 10. 3. 23:42반응형
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
struct Tower {
int x, y, radius;
};
bool isNeighbor(Tower a, Tower b) {
long long x = a.x - b.x;
long long y = a.y - b.y;
long long radius = a.radius + b.radius;
return radius * radius >= x * x + y * y;
}
int villa(int index, int size, bool isVisited[], Tower towers[]) {
isVisited[index] = true;
int sum = 0;
for (int i = 0; i < size; i++) {
if (i != index && !isVisited[i]) {
if (isNeighbor(towers[i], towers[index])) {
villa(i, size, isVisited, towers);
sum++;
}
}
}
return sum;
}
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
int N;
cin >> N;
for (int i = 0; i<N; i++) {
int size;
cin >> size;
bool *isVisited = new bool[size]();
Tower *towers = new Tower[size];
for (int j = 0; j<size; j++)
{
isVisited[j] = false;
}
for (int j = 0; j< size; j++) {
int x, y, radius;
cin >> x >> y >> radius;
Tower temp = { x, y, radius };
towers[j] = temp;
// cout << towers[j].radius;
}
int sum = 0;
for (int j = 0; j<size; j++) {
if (!isVisited[j]) {
villa(j, size, isVisited, towers);
sum++;
}
}
cout << sum << endl;
delete[] isVisited;
delete[] towers;
}
return 0;
}isNeighbor 함수를 잘못 써서 한참 헤맸네요 ㅡㅅㅡ
또 new로 초기화할 때는 일일히 돌아서 초기화해줘야한다는 사실도 알았습니다.
C++는 심오하도다..
반응형'백준' 카테고리의 다른 글
백준 10815번 C++ 풀이 (0) 2018.10.07 백준 1890 C++ 풀이 (0) 2018.10.04 백준 2667 C++ 풀이 (0) 2018.10.03 백준 2178번 C++ 풀이 (0) 2018.10.03 백준 1260번 C++ 풀이 (0) 2018.09.06