Pagini recente » Cod sursa (job #1342999) | Cod sursa (job #1410755) | Cod sursa (job #2747330) | Cod sursa (job #2070621) | Cod sursa (job #1824172)
#include <iostream>
#include <stdio.h>
using namespace std;
int N, M;
int r[100001];
int dim[100001];
void init(){
for(int i=1; i<=N; i++){
r[i] = i;
dim[i] = 1;
}
}
int gaseste_radacina(int x){
while(r[x] != x){
x = r[x];
}
return x;
}
void join(int x, int y){
int i, j;
x = gaseste_radacina(x);
y = gaseste_radacina(y);
dim[x] > dim[y] ? i=x, j=y: i=y; j=x;
r[j] = i;
if(dim[i] == dim[j])
dim[j]++;
}
void aceeasi_multime(int x, int y){
if(gaseste_radacina(x) == gaseste_radacina(y))
printf("DA\n");
else
printf("NU\n");
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
int op, x, y;
scanf("%d %d", &N, &M);
init();
for(int i=0; i<M; i++){
scanf("%d %d %d", &op, &x, &y);
if(op == 1)
join(x, y);
else
aceeasi_multime(x, y);
}
return 0;
}