Pagini recente » Cod sursa (job #1028685) | Cod sursa (job #2135375) | Cod sursa (job #2730938) | Cod sursa (job #335381) | Cod sursa (job #1946556)
#include <cstdio>
using namespace std;
int v[100001];
int rad (int nod){
while (v[nod]>0)
nod=v[nod];
return nod;
}
int main()
{
FILE *fin=fopen ("disjoint.in","r");
FILE *fout=fopen ("disjoint.out","w");
int n,m,i,r1,r2,e1,e2,op,x,y;
fscanf (fin,"%d%d",&n,&m);
for (i=1;i<=n;i++)
v[i]=-1;
for (i=1;i<=m;i++){
fscanf (fin,"%d%d%d",&op,&x,&y);
r1=rad(x);
r2=rad(y);
if (op==1){
if (r1!=r2){
// nu sunt deja in aceeasi multime
e1=-v[r1];
e2=-v[r2];
if (e1<e2){
v[r2]+=v[r1];
v[r1]=r2;
}
else {
v[r1]+=v[r2];
v[r2]=r1;
}
}
}
else {
if (r1==r2)
fprintf (fout,"DA\n");
else fprintf (fout,"NU\n");
}
}
return 0;
}