Pagini recente » Cod sursa (job #1628458) | Cod sursa (job #2602864) | Cod sursa (job #2653692) | Cod sursa (job #2372907) | Cod sursa (job #649199)
Cod sursa(job #649199)
#include <cstdio>
FILE *f,*g;
int r[100100],t[100100];
int m,n,i,c,x,y;
void unite(int x, int y) {
if (r[x]>r[y]) {
t[y]=x;
}
else
t[x]=y;
if (r[x] == r[y]) r[y]++;
}
int rad(int x) {
int R, y;
for (R = x; t[R] != R; R = t[R]);
for (; t[x] != x;){
y = t[x];
t[x] = R;
x = y;
}
return R;
}
int main() {
f=fopen("disjoint.in","r");
g=fopen("disjoint.out","w");
fscanf(f,"%d%d",&n,&m);
for (i = 1; i <= n; i++)
{
t[i] = i;
r[i] = 1;
}
for (i=1;i<=m;i++) {
fscanf(f,"%d%d%d",&c,&x,&y);
if (c==1) {
unite(x,y);
}
else {
if (rad(x)==rad(y))
fprintf(g,"DA\n");
else
fprintf(g,"NU\n");
}
}
fclose(g);
return 0;
}