Pagini recente » Cod sursa (job #2678258) | Cod sursa (job #1945163) | Cod sursa (job #1300122) | Rezultatele filtrării | Cod sursa (job #1232673)
# include <cstdio>
# include <fstream>
# include <iostream>
# include <vector>
# include <cstring>
# include <cctype>
# include <algorithm>
# include <cmath>
# define sz size()
# define bg begin()
# define ed end()
# define pb push_back
# define N 100010
using namespace std;
int x,y,i,n,q,op,xx,yy;
int R[N],T[N];
int find(int x)
{
if(T[x]!=x) T[x]=find(T[x]);
return T[x];
}
void reuneste(int x, int y)
{
if(R[x]>R[y]) T[y]=x;
else T[x]=y;
if(R[x]==R[y]) R[x]++;
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d\n", &n, &q);
for(i=1;i<=n;++i)
R[i]=T[i]=i;
for (i=1;i<=q;++i)
{
scanf("%d %d %d",&op,&x,&y);
x=find(x);
y=find(y);
if (op==1) reuneste(x,y);
else if (x==y) printf("DA\n");
else printf("NU\n");
}
return 0;
}