Pagini recente » Cod sursa (job #2789670) | Cod sursa (job #2694695) | Cod sursa (job #2407758) | Cod sursa (job #125509) | Cod sursa (job #2723434)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
void usain_bolt()
{
ios::sync_with_stdio(false);
fin.tie(0);
}
const int N = 1e5 + 5;
int Size[N], parent[N];
void make_set(int k)
{
Size[k] = 1;
parent[k] = k;
}
int find_set(int k)
{
if(parent[k] == k) {
return k;
}
return parent[k] = find_set(parent[k]);
}
int union_sets(int a, int b)
{
a = find_set(a), b = find_set(b);
if(a != b) {
if(Size[b] > Size[a]) {
swap(a, b);
}
parent[b] = a;
Size[a] += Size[b];
}
}
int main()
{
usain_bolt();
int n, m;
fin >> n >> m;
for(int i = 1; i <= n; ++i) {
make_set(i);
}
for(int i = 1; i <= m; ++i) {
int type, x, y;
fin >> type >> x >> y;
if(type == 1) {
union_sets(x, y);
}
else {
if(find_set(x) != find_set(y)) {
fout << "NU\n";
}
else {
fout << "DA\n";
}
}
}
return 0;
}