Pagini recente » Cod sursa (job #2987219) | Cod sursa (job #2659931) | Cod sursa (job #2461551) | Cod sursa (job #2140576) | Cod sursa (job #2261154)
#include <bits/stdc++.h>
using namespace std;
int v[100005], Next[100005], Size[100005];
void init(int n) {
for(int i = 1; i <= n; i++) {
v[i] = i;
Size[i] = 1;
Next[i] = i;
}
}
int Find(int x) {
return v[x];
}
void unit(int x, int y) {
int fx = Find(x);
if(fx != Find(y)) {
Size[x] += Size[y];
int i = y;
do {
v[i] = fx;
i = Next[i];
}
while(i != y);
int nx = Next[x];
Next[x] = Next[y];
Next[y] = nx;
}
}
void Check(int x, int y) {
if(Find(x) == Find(y)) printf("DA\n");
else printf("NU\n");
}
int N, K, i, cod, x, y;
int main() {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d %d", &N, &K);
init(N);
for(i = 1; i <= K; i++) {
scanf("%d%d%d", &cod, &x, &y);
if(cod == 1) unit(x, y);
else Check(x, y);
}
return 0;
}