Cod sursa(job #1537940)

Utilizator andy1207Cioltan Andrei andy1207 Data 28 noiembrie 2015 12:11:33
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
int t[100001];
int radac(int q)
{
 if(t[q]==0)
    return q;
 t[q]=radac(t[q]);
 return t[q];
}
void a(int q,int w)
{
 int rx=radac(q),ry=radac(w);
 if(rx!=ry)
    t[rx]=ry;
}
bool b(int q,int w)
{
 return radac(q)==radac(w);
}
int main()
{
 int n,m,i,x,y,p;
 freopen("disjoint.in","r",stdin);
 freopen("disjoint.out","w",stdout);
 scanf("%d%d",&n,&m);
 for(i=1;i<=m;i++)
    {
     scanf("%d%d%d",&p,&x,&y);
     if(p==1)
        {
         a(x,y);
        }
     else
        {
         if(b(x,y)==1)
            printf("DA\n");
         else
            printf("NU\n");
        }
    }
return 0;
}