Pagini recente » Cod sursa (job #2413441) | Cod sursa (job #2649603) | Cod sursa (job #1521445) | Cod sursa (job #712458) | Cod sursa (job #295499)
Cod sursa(job #295499)
#include <stdio.h>
int t[100005];
inline void output(int x){if (x)printf("DA\n");else printf("NU\n");}
void join(int x,int y){
int f,a=x,b=y;
while (t[a]!=a)a=t[a];
while (t[b]!=b)b=t[b];
t[b]=a;
while (x!=t[x]){f=t[x];t[x]=a;x=f;}
while (y!=t[y]){f=t[y];t[y]=a;y=f;}
}
void check(int x,int y){
int f,a=x,b=y;
while (t[a]!=a)a=t[a];
while (t[b]!=b)b=t[b];
while (x!=t[x]){f=t[x];t[x]=a;x=f;}
while (y!=t[y]){f=t[y];t[y]=b;y=f;}
if (a==b)output(1); else output(0);
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int N,M,T,x,y,i;
scanf("%d %d",&N,&M);
//preprocesare
for (i=1;i<=N;++i)t[i]=i;
//
for (; M; --M){
scanf("%d %d %d",&T,&x,&y);
if (T==1)join(x,y);
else check(x,y);
}
return 0;
}