Pagini recente » Cod sursa (job #2669826) | Cod sursa (job #2464896) | Cod sursa (job #2673031) | Cod sursa (job #1355625) | Cod sursa (job #2681355)
#include <bits/stdc++.h>
std::ifstream f("disjoint.in");
std::ofstream g("disjoint.out");
int T[100001], r[100001];
int radacina(int k){
if(T[k] == 0)
return k;
else {
int x = radacina(T[k]);
T[k] = x;
return x;
}
}
void unire(int x, int y){
int rx = radacina(x), ry = radacina(y);
if(rx != ry){
if(r[rx] > r[ry])
T[ry] = rx;
else {
T[rx] = ry;
if(r[rx] == r[ry])
r[ry]++;
}
}
}
int main()
{
int n, m, op, x, y;
f >> n >> m;
while(m--){
f >> op >> x >> y;
if(op == 1)
unire(x, y);
else {
if(radacina(x) == radacina(y))
g << "DA\n";
else g << "NU\n";
}
}
return 0;
}