Pagini recente » Cod sursa (job #847495) | Cod sursa (job #1047390) | Cod sursa (job #2356137) | Cod sursa (job #474178) | Cod sursa (job #656765)
Cod sursa(job #656765)
#include <algorithm>
#include <stdio.h>
using namespace std;
#define N_MAX 100001
int tata[N_MAX], grad[N_MAX];
int op, x, y;
int n, m;
int radacina(int x){
int rad, aux;
for(rad = x; rad != tata[rad]; rad = tata[rad]);
for(; x != tata[x];){
aux = tata[x];
tata[x] = rad;
x = aux;
}
return rad;
}
void uneste(int x, int y){
if(grad[x] > grad[y]){
tata[y] = tata[x];
grad[x] += grad[y];
}
else{
tata[x] = tata[y];
grad[y] += grad[x];
}
}
int main(){
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i ++)
tata[i] = i, grad[i] = 1;
for(int i = 0; i < m; i ++){
scanf("%d %d %d", &op, &x, &y);
if(op == 1)
uneste(x, y);
else
if(radacina(x) == radacina(y))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}