목차

     

     


     

     

    [백준 1717번 C/C++] 집합의 표현

     

     

    https://www.acmicpc.net/submit/1717/61218850

     

    로그인

     

    www.acmicpc.net


     

    해결전략

     

    Union(합집합) 

    Find

     


     

    코드

     

    #include <stdio.h>
    using namespace std;
    
    int n, m;
    int unf[1000001];
    
    int Find(int k)
    {
        if (unf[k] == k) return k;
    
        return unf[k] = Find(unf[k]);
    }
    
    void Union(int a, int b)
    {
        a=Find(a);
        b=Find(b);
    
        if (a != b) unf[a] = b;
    }
    
    int main()
    {
        scanf("%d %d", &n, &m);
        for (int i = 1; i <= n; i++) {
            unf[i] = i;
        }
    
        for (int i = 1; i <= m; i++){
            int x, y, z;
            scanf("%d %d %d", &x, &y, &z);
    
            if (x == 0) {
                Union(y, z);
            }
            else if(x == 1) {
                if (Find(y)==Find(z)) printf("YES\n");
                else printf("NO\n");
            }
        }
    
        return 0;
    }