Pagini recente » Cod sursa (job #1514819) | Cod sursa (job #1781553) | Cod sursa (job #2209277) | Cod sursa (job #233525) | Cod sursa (job #1790433)
#include <stdio.h>
#define MAXN 100001
int next[MAXN],lung[MAXN];
int find(int x)
{
if(!next[x])
return x;
return next[x]=find(next[x]);
}
inline void unite(int x,int y)
{
if(lung[x]<lung[y])
next[x]=y;
else
{
if(lung[x]==lung[y])
lung[x]++;
next[y]=x;
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
int m,i,cod,x,y;
fscanf(fin,"%d%d",&m,&m);
for(i=0;i<m;i++)
{
fscanf(fin,"%d%d%d",&cod,&x,&y);
if(cod==1)
unite(find(x),find(y));
else
{
if(find(x)==find(y))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}