← Back to List

1717번: 집합의 표현 ↗

Solutions

C++14
717 B | 717 chars
#include <iostream>
using namespace std;
int N,M,a,b,c;


int u[1100000];
int find(int k) {
    if(u[u[k]] == u[k]) return u[k];
    else return u[k]=find(u[k]);
}

void uni(int A, int B) {
    if(A < B) u[B] = A;
    else u[A] = B; 
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>N>>M;
    for(int x=1; x<=N; x++) u[x]=x;
    for(int x=0; x<M; x++)
    {
        cin>>a>>b>>c;

        if(a == 0)
        {
            int A=find(b);
            int B=find(c);
            uni(A,B);
        }
        else
        {
            if(find(b) != find(c))
            {
                cout<<"NO\n";
            }
            else cout<<"YES\n";
        }
        
    }
}