Pagini recente » Cod sursa (job #1380638) | Cod sursa (job #2569566) | Cod sursa (job #1996234) | Cod sursa (job #293012) | Cod sursa (job #371710)
Cod sursa(job #371710)
#include<stdio.h>
#define NMAX 100005
using namespace std;
int n,m,tata[NMAX],ordin[NMAX],x,y,x1,y1;
void group(int x)
{
tata[x]=x;
ordin[x]=1;
}
int go(int x)
{
if(tata[x]==x)
return x;
else
{
tata[x]=go(tata[x]);
return tata[x];
}
}
void reuniune(int x,int y)
{
x1=go(x);
y1=go(y);
if(ordin[x1]>ordin[y1])
tata[y1]=x1;
else if(ordin[x1]<ordin[y1])
tata[x1]=y1;
else
if(x1!=y1)
{
tata[x1]=y1;
ordin[x1]++;
}
}
int main()
{
int i,t,in,sf;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
group(i);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&t,&in,&sf);
if(t==1)
reuniune(in,sf);
else
{
if(go(in)==go(sf))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}