Pagini recente » Cod sursa (job #191563) | Cod sursa (job #125214) | Cod sursa (job #2941431) | Cod sursa (job #2074503) | Cod sursa (job #2144628)
#include<cstdio>
using namespace std;
FILE *fin = freopen("disjoint.in", "r", stdin);
FILE *fout = freopen("disjoint.out", "w", stdout);
const int NMax = 100001;
int T, X, Y, M, N;
int lg[NMax], father[NMax];
int Find (int x){
while (x != father[x])
x = father[x];
return x;
}
void Union(int x, int y){
if (lg[y] < lg[x])
father[y] = x;
else
father[x] = y;
if (lg[x] == lg[y])
lg[y] ++;
}
int main(){
scanf("%d%d", &N, &M);
for (int i = 1; i <= N; i++){
father[i] = i;
lg[i] = 1;
}
for (int i = 1; i <= M; i++){
scanf("%d%d%d", &T, &X, &Y);
if (T == 1)
Union(Find(X), Find(Y));
else{
if (Find(X) == Find(Y))
printf("DA\n");
else
printf("NU\n");
}
}
}