Pagini recente » Cod sursa (job #1775118) | Cod sursa (job #521710) | Cod sursa (job #209060) | Cod sursa (job #2334108) | Cod sursa (job #3264948)
#include <bits/stdc++.h>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
vector<int> t(100001,-1);
int getRoot(int node) {
while (t[node] > 0) {
node = t[node];
}
return node;
}
void connect(int a, int b) {
const int rootA = getRoot(a);
const int rootB = getRoot(b);
if (rootA == rootB) {
return;
}
if (rootA > rootB) {
t[rootB] += t[rootA];
t[rootA] = rootB;
while (a != rootA) {
const int x = t[a];
t[a] = rootB;
a = x;
}
} else {
t[rootA] += t[rootB];
t[rootB] = rootA;
while (b != rootB) {
const int x = t[b];
t[b] = rootA;
b = x;
}
}
}
int main() {
fin >> n >> m;
while (m--) {
int t,a,b;
fin >> t >> a >> b;
if (t == 1) {
connect(a,b);
} else {
if (getRoot(a) == getRoot(b)) {
fout << "DA\n";
} else {
fout << "NU\n";
}
}
}
return 0;
}