Pagini recente » Cod sursa (job #2594727) | Cod sursa (job #839320) | Cod sursa (job #2641763) | Cod sursa (job #2710975) | Cod sursa (job #1416070)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100001
int sef[MAXN];
inline int myfind(int x){
int stiva[MAXN], st;
st=0;
while(sef[x]>0){
stiva[st]=x;
st++;
x=sef[x];
}
st--;
while(st>0){
sef[stiva[st]]=x;
st--;
}
return x;
}
inline void myunion(int x, int y){
sef[myfind(y)]=myfind(x);
}
int main(){
FILE*fin=fopen("disjoint.in", "r");
FILE*fout=fopen("disjoint.out", "w");
int n, m, i, j, ok, op, x, y;
fscanf(fin, "%d%d", &n, &m);
for(i=1; i<=m; i++){
fscanf(fin, "%d%d%d", &op, &x, &y);
if(op==1)
myunion(x, y);
else{
if(myfind(x)!=myfind(y))
fprintf(fout ,"NU\n");
else
fprintf(fout, "DA\n");
}
}
return 0;
}