Pagini recente » Cod sursa (job #2518437) | Cod sursa (job #2583317) | Cod sursa (job #2554653) | Cod sursa (job #2819338) | Cod sursa (job #850617)
Cod sursa(job #850617)
#include<cstdio>
using namespace std;
#define MAX 100001
int T[MAX],G[MAX];
int find(int x){
int R,aux;
for(R=x;T[R]!=R;R=T[R]);
while(T[x]!=x){
aux=T[x];
T[x]=R;
x=aux;
}
return R;
}
void uneste(int x,int y){
if(G[x]>G[y])
T[y]=x;
else
T[x]=y;
if(G[x]==G[y])
G[y]++;
}
int main(){
int c,x,y,n,m,i;
freopen("disjoint.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
T[i]=G[i]=i;
freopen("disjoint.out","w",stdout);
for(i=1;i<=m;i++){
scanf("%d%d%d",&c,&x,&y);
if(c==1)
uneste(find(x),find(y));
else{
if(find(x)==find(y))
printf("DA\n");
else
printf("NU\n");
}
}
fclose(stdin);
fclose(stdout);
return 0;
}