Cod sursa(job #1883956)

Utilizator ipus1Stefan Enescu ipus1 Data 18 februarie 2017 12:41:20
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
int dad[100001];
int tata(int x)
    {if(dad[x]==x)
        return x;
    else
        return dad[x]=tata(dad[x]);
    }
void join(int x,int y)
    {int a,b;
    a=tata(x);
    b=tata(y);
    dad[a]=b;
    }
int main ()
{freopen ("disjoint.in","r",stdin);
freopen ("disjoint.out","w",stdout);
int n,m,i,t,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
    dad[i]=i;
for(i=1;i<=m;i++)
    {scanf("%d%d%d",&t,&x,&y);
    if(t==1)
        join(x,y);
    else
        if(tata(x)==tata(y))
            printf("DA\n");
        else
            printf("NU\n");
    }
return 0;
}