Pagini recente » Rating lovemeagaincanya (LoveMeAgain) | Cod sursa (job #2365278) | Cod sursa (job #3123809) | Cod sursa (job #624052) | Cod sursa (job #2612249)
#include <bits/stdc++.h>
#define nmax 131072
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, m, TT[nmax], RG[nmax];
void Close () {
fin.close();
fout.close();
}
int Find (int x) {
int R, y;
for (R = x; TT[R] != R; R = TT[R]);
for ( ; TT[x] != x;) {
y = TT[x];
TT[x] = R;
x = y;
}
return R;
}
void Unite (int x, int y) {
if (RG[x] > RG[y]) TT[y] = x;
else TT[x] = y;
if (RG[x] == RG[y]) RG[y] ++;
}
int main() {
int op, x, y;
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
TT[i] = i;
RG[i] = 1;
}
for (int i = 1; i <= m; ++i) {
fin >> op >> x >> y;
if (op == 2) {
if (Find(x) == Find(y)) fout << "DA\n";
else fout << "NU\n";
} else Unite (Find(x), Find(y));
}
Close ();
return 0;
}