Pagini recente » Cod sursa (job #937513) | Cod sursa (job #985590) | Cod sursa (job #1287326) | Cod sursa (job #3213063) | Cod sursa (job #335621)
Cod sursa(job #335621)
#include<stdio.h>
int rang[100000],p[100000];
void unite(int x,int y)
{
if(rang[x]>rang[y])
p[y]=x;
else
{
p[x]=y;
if(rang[x]==rang[y])
rang[y]++;
}
}
int find(int x)
{
if(x!=p[x])
p[x]=find(p[x]);
return p[x];
}
void reunion(int x,int y)
{
unite(find(x),find(y));
}
int main()
{
int n,m,x,y,i,tip;
FILE *f=fopen("disjoint.in","r");
FILE *g=fopen("disjoint.out","w");
fscanf(f,"%i%i\n",&n,&m);
for(i=0;i<m;i++)
{
fscanf(f,"%i%i%i\n",&tip,&x,&y);
if(tip==1)
reunion(x,y);
else
{
if(find(x)==find(y))
fprintf(g,"%s\n","DA");
else
fprintf(g,"%s\n","NU");
}
}
fclose(f);
fclose(g);
return 0;
}