Pagini recente » Cod sursa (job #311104) | Cod sursa (job #2088218) | Cod sursa (job #1325277) | Cod sursa (job #2064827) | Cod sursa (job #2273735)
#include<stdio.h>
using namespace std;
int t[100002],r[100002];
int cauta(int x){
int i;
for(i = x; t[i] != i; i = t[i]);
int j = x;
int k;
while(t[j] != j)
{
k = t[j];
t[j] = i;
j = k;
}
return i;
}
void uneste(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);
int n,x,m,y,i,p;
scanf("%d %d ", &n, &m);
for(i = 1; i <= n; i++)
{
t[i]=i;
r[i]=1;
}
for(i = 1; i <= m; i++)
{
scanf("%d %d %d", &p, &x, &y);
if( p== 2)
{
if(cauta(x) == cauta(y))
printf("DA\n");
else
printf("NU\n");
}
else
uneste(cauta(x), cauta(y));
}
}