Pagini recente » Cod sursa (job #1597240) | Cod sursa (job #682113) | Cod sursa (job #2393753) | Cod sursa (job #1360772) | Cod sursa (job #2452494)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, rang[100001], t[100001];
int root(int k) {
if(t[k] == 0)
return k;
else {
int x = root(t[k]);
t[k] = x;
return x;
}
}
void reunion(int a, int b) {
int ra = root(a);
int rb = root(b);
if(ra != rb) {
if(rang[ra] < rang[rb])
t[rb] = ra;
else {
t[ra] = rb;
if(rang[ra] == rang[rb])
rang[rb]++;
}
}
}
int main() {
f >> n >> m;
int op, x, y;
for(int i = 1; i <= m; i++) {
f >> op >> x >> y;
if(op == 1)
reunion(x, y);
else if(root(x) == root(y))
g << "DA" << '\n';
else
g << "NU" << '\n';
}
}