Pagini recente » Cod sursa (job #1831126) | Cod sursa (job #1971710) | Cod sursa (job #2352889) | Cod sursa (job #1226348) | Cod sursa (job #584239)
Cod sursa(job #584239)
#include <cstdio>
#include <cstdlib>
#define MAXN 100000
int T[MAXN+10], RG[MAXN+10];
int find(int a){
int R, aux;
for(R=a; T[R]!=R; R=T[R])
;
while(T[a]!=a){
aux=T[a];
T[a]=R;
a=aux;
}
return R;
}
void comb(int a, int b){
if(RG[a]>RG[b])
T[b]=a;
else
T[a]=b;
if(RG[a]==RG[b])
RG[b]++;
}
int main(){
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int N, M, a, b, c, i;
scanf("%d%d", &N, &M);
for(i=0; i<N; i++){
T[i]=i;
RG[i]=1;
}
for(i=0; i<M; i++){
scanf("%d%d%d", &a, &b, &c);
if(a==1)
comb(find(b), find(c));
else {
if(find(b) == find(c))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}