Pagini recente » Cod sursa (job #1376583) | Cod sursa (job #3215447) | Cod sursa (job #1368037) | Cod sursa (job #120390) | Cod sursa (job #2501904)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
struct muchie
{
int a,b,cost;
};
int n,m,cost,h[NMAX],t[NMAX];
int Find(int x)
{
int r = x,j;
while(t[r] != r)r = t[r];
while(x != r)
{
j = t[x];
t[x] = r;
x = j;
}
return r;
}
void Union(int x,int y)
{
int rx = Find(x),ry = Find(y);
if(rx == ry)return;
if(h[rx] < h[ry])
t[rx] = ry;
else
if(h[ry] < h[rx])
t[ry] = rx;
else
{
t[ry] = rx;
h[rx] ++;
}
}
void citire()
{
scanf("%d %d",&n,&m);
for(int i=1; i<=n; ++i)
h[i]=1,t[i] = i;
int x,y,t;
while(m--)
{
scanf("%d %d %d",&t,&x,&y);
if(t == 1)Union(x,y);
else
if(Find(x) == Find(y))printf("DA\n");
else printf("NU\n");
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
citire();
return 0;
}