Pagini recente » Cod sursa (job #2359694) | Cod sursa (job #884377) | Cod sursa (job #648068) | Cod sursa (job #88755) | Cod sursa (job #2262104)
#include <cstdio>
using namespace std;
int n, m, t, x, y, f[100005], h[100005], next[100005];
void init(int n)
{
for(int i=1; i<=n; i++)
f[i]=i, h[i]=0, next[i]=i;
}
int Find(int x)
{
return f[x];
}
void Union(int x, int y)
{
int rx=Find(x);
int ry=Find(y);
if(rx!=ry)
{
h[x]+=h[y];
int i=y;
do {
f[i]= rx;
i = next[i];
} while(i!=y);
int nx = next[x];
next[x]=next[y];
next[y]=nx;
}
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
init(n);
for(int i=1; i<=m; i++)
{
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");
}
}
return 0;
}