Pagini recente » Cod sursa (job #1140853) | Cod sursa (job #2854137) | Cod sursa (job #2797532) | Cod sursa (job #1405848) | Cod sursa (job #2058729)
#include <cstdio>
using namespace std;
int n,m,op,x,y,c1,c2;
int t[100001];
int Find(int xx)
{ while(xx!=t[xx]) xx=t[xx];
return xx;
}
void Union(int c,int cc)
{ if(h[c]>h[cc]) t[cc]=c;
else if(h[c]<h[cc]) t[c]=cc;
else if(h[c]==h[cc]) {t[cc]=c;h[cc]++;}
}
int main()
{ FILE *f,*g;
f=fopen("disjoint.in","r");
g=fopen("disjoint.out","w");
fscanf(f,"%d %d",&n,&m);
int i;
for(i=1;i<=n;i++)
t[i]=i;
for(i=1;i<=m;i++)
{ fscanf(f,"%d %d %d",&op,&x,&y);
if(op==1)
{ c1=Find(x);
c2=Find(y);
Union (c1,c2);
}
else
{ c1=Find(x);
c2=Find(y);
if(c1==c2) fprintf(g,"DA\n");
else fprintf(g,"NU\n");
}
}
return 0;
}