Pagini recente » Cod sursa (job #848570) | Cod sursa (job #1501545) | Cod sursa (job #1342991) | Cod sursa (job #1758446) | Cod sursa (job #1269064)
#include <cstdio>
#include <map>
#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;
multimap <int,int> v;
multimap <int,int>::iterator it,itmax;
int main()
{int i,j;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) {v.insert(make_pair(i,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]);
itmax=v.upper_bound(k);
for (it=v.lower_bound(k);it!=itmax;it++)
{i=it->second;
p[i]=r;
v.insert(make_pair(r,i));}
it=v.lower_bound(k);
itmax--;
v.erase(it,itmax);
}
m--;
}
return 0;
}