Pagini recente » Cod sursa (job #430277) | Cod sursa (job #104103) | Cod sursa (job #1844588) | Cod sursa (job #2809211) | Cod sursa (job #1816609)
#include <stdio.h>
#define MAXN 100001
void add(int x,int y,int tata[MAXN],int h[MAXN]){
while(tata[x] != 0)
x = tata[x];
while(tata[y] != 0)
y = tata[y];
if(h[x] < h[y]){
tata[x] = y;
h[y] = h[y] + 1;
}
else{
tata[y] = x;
h[x] = h[x] + 1;
}
}
int query(int x,int y,int tata[MAXN],int h[MAXN]){
while(tata[x] != 0)
x = tata[x];
while(tata[y] != 0)
y = tata[y];
if(x == y)
return 1;
return 0;
}
int main(){
int n, m, i, tata[MAXN],h[MAXN], mod, x, y;
FILE *f, *g;
f = fopen("disjoint.in","r");
g = fopen("disjoint.out","w");
fscanf(f,"%d %d",&n,&m);
for(i = 1;i <= n; ++i){
tata[i] = 0;
h[i] = 0;
}
for(i = 1;i <= m; ++i){
fscanf(f,"%d %d %d",&mod,&x,&y);
if(mod == 1)
add(x,y,tata,h);
else{
x = query(x,y,tata,h);
if(x == 1)
fprintf(g,"%s\n","DA");
else
fprintf(g,"%s\n","NU");
}
}
return 0;
}