Pagini recente » Cod sursa (job #2867014) | Cod sursa (job #1885665) | Cod sursa (job #2112506) | Cod sursa (job #2466458) | Cod sursa (job #1046141)
#include <stdio.h>
#include <iostream>
#define Nmax 100020
using namespace std;
int Arb[Nmax],Rang[Nmax];
int cautare (int x)
{
int i,aux;
for(i=x;Arb[i]!=i;i=Arb[i]);
for (;Arb[x]!=x;)
{
aux=Arb[x];
Arb[x]=i;
i=aux;
}
return i;
}
void unire (int x, int y)
{
if (Rang[x]>Rang[y])
Arb[y]=x;
else
Arb[x]=y;
if(Rang[x]==Rang[y])
Rang[y]++;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
int i,x,y,cod;
for (i=1;i<=n;i++)
{
Arb[i]=i;
Rang[i]=1;
}
for (i=1;i<=m;i++)
{
scanf("%d %d %d",&cod,&x,&y);
if(cod==2)
{
if (cautare(x)==cautare(y))
printf("DA\n");
else printf("NU\n");
}
else
{
if (cautare(x)==cautare(y))
{
fprintf(stderr,"%d",i);
return 0;
}
unire(cautare(x),cautare(y));
}
}
return 0;
}