Cod sursa(job #1537940)
Utilizator | Cioltan 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;
}