Cod sursa(job #2119150)

Utilizator mateibanuBanu Matei Costin mateibanu Data 31 ianuarie 2018 18:33:34
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <bits/stdc++.h>

using namespace std;

int t[100010];

int arb(int x){
    if (t[x]==x) return x;
    else return arb(t[x]);
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);

    int n,m,i,p,x,y;

    scanf("%d%d",&n,&m);
    for (i=1;i<=n;i++) t[i]=i;
    for (i=1;i<=m;i++){
        scanf("%d%d%d",&p,&x,&y);
        if (p==1&&x!=y){
            t[arb(y)]=x;
        }
        else{
            if (arb(x)==arb(y)) printf("DA\n");
            else printf("NU\n");
        }
    }
    return 0;
}