ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 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
Designed by Tistory.