Pagini recente » Cod sursa (job #2618657) | Cod sursa (job #1126240) | Cod sursa (job #2313039) | Cod sursa (job #2381961) | Cod sursa (job #1251406)
#include <stdio.h>
#include <stdlib.h>
#define w(n,t) (t*)malloc((n)*sizeof(t))
#define fr(i,a,b) for(i=a;i<b;++i)
int*p,*P;
int g(int i){
int j=i;
while(j!=p[j])j=p[j];
return p[i]=j;
}
void G(int i,int j){
if(P[i]<P[j])i^=j^=i^=j;
p[j]=i;
P[i]+=P[i]==P[j];
}
int main(){
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,t,a,b;
scanf("%i%i",&n,&m);
p=w(n,int);P=w(n,int);
fr(t,0,n)p[t]=t,P[t]=1;
while(m--){
scanf("%i%i%i",&t,&a,&b);--a,--b;
t==1?G(g(a),g(b)):printf(g(a)==g(b)?"DA\n":"NU\n");
}
free(p);free(P);
return 0;
}