백준 문제/Disjoints Set 4

[백준] 10216번 Count Circle Groups

문제: 10216번: Count Circle Groups  #include #include #include #include #include #include #include using namespace std;struct circle { int x; // x 좌표 int y; // y 좌표 int r; // 통신 영역 거리};vector circles;vector circlesSet;// 해당 원이 속한 집합 번호를 반환하는 함수int find_set(int u) { if (circlesSet[u] == u) return u; return circlesSet[u] = find_set(circlesSet[u]);}// 두 개의 원 합치기void union_(int u, int v) { int ur = fi..

[백준] 20040번 사이클 게임

문제: 20040번: 사이클 게임  #include #include #include #include #include #include #include using namespace std;vector dots;vector sizes;int find_set(int u) { if (dots[u] == u) return u; return dots[u] = find_set(dots[u]);}bool union_(int u, int v) { int ur = find_set(u); int uv = find_set(v); // 다른 집합에 있으면 연결해줘야함 if (ur != uv) { if (sizes[ur] > n >> m; int cnt = 1; dots = vector(n); sizes = vector(n, ..

[백준] 4195번 친구 네트워크

문제: 4195번: 친구 네트워크  #include #include #include #include #include #include #include using namespace std;vector sizes;vector frendRelation;int find_set(int u) { if (u == frendRelation[u]) return u; else return frendRelation[u] = find_set(frendRelation[u]);}void union_(int u, int v) { int du = find_set(u); // u 가 속한 집합 번호 가져와 int dv = find_set(v); // v 가 속한 집합 번호 가져와 if (du != dv) { // du 가 더 큰 트..