Pagini recente » Cod sursa (job #2419531) | Cod sursa (job #1430469) | Cod sursa (job #2150725) | Cod sursa (job #1089772) | Cod sursa (job #2497513)
//
// main.cpp
// Paduri De Multimi Disjuncte
//
// Created by Andu Andu on 22/11/2019.
// Copyright © 2019 Andu Andu. All rights reserved.
//
// #include <iostream>
#include <fstream>
#include <vector>
#define func int
#define N 100001
std::ifstream cin ("disjoint.in");
std::ofstream cout ("disjoint.out");
int m, n;
int a,b,c;
int tt[N];
int h[N];
using namespace std;
func calc(int x) {
int y = x;
while (tt[y] != y) {
y = tt[y];
}
while(tt[x]!=y)
{
int z;
z=x;
x=tt[x];
tt[z]=y;
}
return y;
}
void merge(int x, int y) {
x = calc(x);
y = calc(y);
tt[y] = x;
h[x] = max(h[x],h[y]+1);
}
bool afla(int x, int y) {
x = calc(x);
y = calc(y);
return x==y;
}
int main() {
cin>>n>>m;
for (int i=1; i<=n; i++) {
tt[i] = i;
h[i] = 1;
}
for (int i=1;i<=m;i++) {
cin>>a>>b>>c;
if ( a == 1 ) {
merge(b,c);
} else if (a==2) {
int alef0 = afla(b, c);
if (alef0 == 1) {
cout<<"DA\n";
} else {
cout<<"NU\n";
}
}
}
return 0;
}