본문 바로가기
PS 문제 풀이/Jungol

[Jungol] 정올 1863 종교

by 까망 하르방 2021. 4. 2.
반응형

출처http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1136&sca=4050

Approach

Disjoint-Set & Union-Find  

 

Disjoint-Set & Union-Find

Disjoint-Set, 상호 배타적 집합 서로 중복되지 않는 부분 집합들을 의미 (교집합 존재 X) Union-Find Disjoint-Set을 표현할 때 사용하는 알고리즘. ex) 여러 노드가 존재할 때, 두 개의 노드를 선택해서 두

zoosso.tistory.com


#include <stdio.h>
const int LM = 50005;
int N, M, group[LM], ans;
int find(int n) {
    if (group[n] == n) return n;
    group[n] = find(group[n]);
    return group[n];
}

int main() {
    // freopen("input.txt", "r", stdin);
    int u, v;
    scanf("%d %d", &N, &M);
    ans = N;
    for (int i = 1; i <= N; ++i)
        group[i] = i;

    for (int i = 0; i < M; ++i) {
        scanf("%d %d", &u, &v);
        u = find(u), v = find(v);
        if (u == v) continue;
        ans--;
        group[v] = u;
    }

    printf("%d\n", ans);
}

 

반응형

댓글