Cod sursa(job #1039173)

Utilizator geniucosOncescu Costin geniucos Data 22 noiembrie 2013 17:20:29
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<cstdio>
using namespace std;
int i,n,m,x,y,tip,t[100009];
int tata(int nod)
{
    if(t[nod]==nod) return nod;
    return t[nod]=tata(t[nod]);
}
void unite(int n1,int n2)
{
    t[tata(n1)]=tata(n2);
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
    t[i]=i;
while(m)
{
    m--;
    scanf("%d",&tip);
    scanf("%d",&x);
    scanf("%d",&y);
    if(tip==1) unite(x,y);
    else
    {
        if(tata(x)==tata(y)) printf("DA\n");
        else printf("NU\n");
    }
}
return 0;
}