Pagini recente » Cod sursa (job #837537) | Cod sursa (job #2194731) | Cod sursa (job #1382784) | Cod sursa (job #1328858) | Cod sursa (job #1274539)
#include <cstdio>
#include <map>
#include <vector>
#define nmax 100010
using namespace std;
FILE *f=fopen("disjoint.in","r");
FILE *g=fopen("disjoint.out","w");
int n,m,p[nmax];
int x,y,cod,k,r;
vector <int> v[nmax];
vector <int>::iterator it,itmax;
int main()
{int i,j;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) {v[i].push_back(i);
p[i]=i;}
while (m!=0)
{fscanf(f,"%d %d %d\n",&cod,&x,&y);
if (cod==2) {if (p[x]==p[y]) fprintf(g,"DA\n");
else fprintf(g,"NU\n");
}
else {k=max(p[x],p[y]);
r=min(p[x],p[y]);
for (it=v[k].begin();it!=v[k].end();it++)
{i=*it;
p[i]=r;
v[r].push_back(i);}
v[k].clear();
}
m--;
}
return 0;
}