Pagini recente » Cod sursa (job #881825) | Cod sursa (job #2829517) | Cod sursa (job #14192) | Cod sursa (job #1057729) | Cod sursa (job #2672794)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n, q, r[100001], t[100001];
int cauta (int a) {
int x = a, y;
while (x != t[x])
x = t[x];
while (a != t[a]) {
y = t[a];
t[a] = x;
a = y;
}
return x;
}
void uneste (int a, int b) {
int x = cauta (a);
int y = cauta (b);
if (r[x] < r[y])
t[x] = y;
else
t[y] = x;
if (r[x] == r[y])
r[x]++;
}
int main()
{
fin >> n >> q;
int op, a, b;
for (int i = 1; i <= n; i++) {
r[i] = 1; t[i] = i;
}
for (int i = 1; i <= q; i++) {
fin >> op >> a >> b;
if (op == 1)
uneste (a, b);
else
if (cauta (a) == cauta (b))
fout << "DA" << '\n';
else
fout << "NU" << '\n';
}
return 0;
}