Pagini recente » Cod sursa (job #2333438) | Cod sursa (job #1826490) | Cod sursa (job #686000) | Cod sursa (job #2335047) | Cod sursa (job #1144435)
# include <cstdio>
# define N 100010
using namespace std;
int i,n,m,op,x,y;
int T[N],R[N];
int find(int x)
{
int R,aux;
for(R=x; R!=T[R]; R=T[R]);
while(T[x]!=x)
{
aux=T[x];
T[x]=R;
x=aux;
}
return R;
}
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, &m);
for(i=1; i<=n; ++i)
{
T[i]=i;
R[i]=1;
}
for(; m; --m)
{
scanf("%d %d %d\n", &op, &x, &y);
if(op==1) reuneste(find(x),find(y));
else if(find(x)==find(y)) printf("DA\n");
else printf("NU\n");
}
}