Pagini recente » Cod sursa (job #1798168) | Cod sursa (job #571212) | Cod sursa (job #632385) | Cod sursa (job #264246) | Cod sursa (job #2443499)
//#include <fstream>
#include <iostream>
using namespace std;
//ifstream cin("disjoint.in");
//ofstream cout("disjoint.out");
int dad[100005];
int card[100005];
int stramos(int nod) {
if (nod != dad[nod]) {
dad[nod] = stramos(dad[nod]);
}
return dad[nod];
}
void unite(int a, int b) {
if (card[dad[a]] > card[dad[b]]) {
int old1 = card[dad[b]];
dad[b] = dad[a];
card[dad[a]] += old1;
}
else {
int old2 = card[dad[a]];
dad[a] = dad[b];
card[dad[b]] += old2;
}
}
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
dad[i] = i;
card[i] = 1;
}
for (int i = 1; i <= m; i++) {
int x, a, b;
cin >> x >> a >> b;
if (x == 1) {
unite(stramos(a), stramos(b));
}
if (x == 2) {
if (stramos(a) == stramos(b)) {
cout << "DA" << '\n';
}
else {
cout << "NU" << '\n';
}
}
}
return 0;
}