Pagini recente » Cod sursa (job #631465) | Cod sursa (job #56718) | Cod sursa (job #1201827) | Cod sursa (job #1058260) | Cod sursa (job #1605830)
#include <stdio.h>
#define MAXN 100001
using namespace std;
int sef[MAXN];
inline int myfind(int x){
int i, stiva[MAXN];
i=0;
while(sef[x]>0){
i++;
stiva[i]=x;
x=sef[x];
}
while(i>0){
sef[stiva[i]]=x;
i--;
}
return x;
}
inline int myunion(int x, int y){
sef[myfind(y)]=myfind(x);
}
//int v[MAXN][3];
int main(){
FILE*fin=fopen("disjoint.in", "r");
FILE*fout=fopen("disjoint.out", "w");
int n, k, p, a, b, i, x, y;
fscanf(fin, "%d%d", &n, &k);
for(i=1; i<=k; i++){
fscanf(fin, "%d%d%d", &p, &x, &y);
if(p==1)
myunion(x, y);
else{
if(myfind(x)==myfind(y))
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
}
return 0;
}