Pagini recente » Cod sursa (job #322785) | Cod sursa (job #2608188) | Cod sursa (job #2388439) | Cod sursa (job #588233) | Cod sursa (job #3267077)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int parent[100005], sz[100005];
void make_set(int crt) {
parent[crt] = crt;
sz[crt] = 1;
}
int find_parent(int crt) {
if(crt == parent[crt])
return crt;
return parent[crt] = find_parent(parent[crt]);
}
void unite(int a, int b) {
a = find_parent(a);
b = find_parent(b);
if(a == b)
return;
if(sz[a] < sz[b])
swap(a, b);
parent[b] = a;
sz[a] += sz[b];
}
int main() {
int n, m; in >> n >> m;
for(int i = 1; i <= n; i++)
make_set(i);
for(int i = 1; i <= m; i++) {
int cerinta, a, b; in >> cerinta >> a >> b;
if(cerinta == 1) {
unite(a, b);
}
else {
if(find_parent(a) == find_parent(b)) {
out << "DA\n";
}
else {
out << "NU\n";
}
}
}
return 0;
}