Pagini recente » Cod sursa (job #382745) | Cod sursa (job #1174347) | Cod sursa (job #795520) | Cod sursa (job #2413228) | Cod sursa (job #614712)
Cod sursa(job #614712)
#include<stdio.h>
#define MaxN 100100
int N,M,stare,x,y,T[MaxN],rang[MaxN];
int radacina(int n)
{
if(T[n] != n)
T[n] = radacina(T[n]);
return T[n];
}
void reuneste(int x,int y)
{
x = radacina(x);
y = radacina(y);
if(rang[x] > rang[y])
T[y] = x,rang[y] ++;
else
T[x] = y,rang[x] ++;
}
void Complet(void)
{
for(int i=1;i<MaxN;i++)
T[i] = i;
}
int main()
{
FILE *f = fopen("disjoint.in","r");
FILE *g = fopen("disjoint.out","w");
Complet();
fscanf(f,"%d %d",&N,&M);
for(int i=1;i<=M;i++)
{
fscanf(f,"%d %d %d",&stare,&x,&y);
switch(stare)
{
case 1 : reuneste(x,y);
break;
case 2 : if(radacina(x) == radacina(y))
fprintf(g,"DA\n");
else
fprintf(g,"NU\n");
}
}
fclose(g);
fclose(f);
return 0;
}