Pagini recente » Cod sursa (job #3202544) | Cod sursa (job #2496163) | Cod sursa (job #3030799) | Cod sursa (job #482906) | Cod sursa (job #3254872)
#include <iostream>
using namespace std;
int n, m;
int t[1000005], inalt[1000005];
int cod, x, y;
int rad(int nod) {
if (nod == t[nod])
return nod;
int rnod = rad(t[nod]);
t[nod] = rnod;
return rnod;
}
void reuniune() {
int rx = rad(x);
int ry = rad(y);
if (inalt[rx] > inalt[ry]) {
t[ry] = rx;
}
else if (inalt[ry] > inalt[rx]) {
t[rx] = ry;
}
else {
t[ry] = rx;
inalt[rx]++;
}
}
bool interogare() {
return (rad(x) == rad(y));
}
int main() {
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
cin >> n >> m;
for (int i=1;i<=n;i++)
t[i] = i;
for (;m;m--) {
cin >> cod >> x >> y;
if (cod == 1) {
reuniune();
}
else {
if (interogare()) {
cout << "DA\n";
}
else cout << "NU\n";
}
}
return 0;
}