Pagini recente » Cod sursa (job #522384) | Cod sursa (job #2868763) | Cod sursa (job #1991224) | Cod sursa (job #2974386) | Cod sursa (job #3250100)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int v[100005], r[100005];
int root (int x) {
while (x!=v[x]) {
x=v[x];
}
return x;
}
void unite(int x, int y) {
if (r[x]<r[y]) {
v[x]=y;
}
if (r[x]>r[y]) {
v[y]=x;
}
if (r[x]==r[y]) {
v[y]=x;
r[x]++;
}
}
int main()
{
fin.tie(0); fin.sync_with_stdio(false);
int n, m; fin>>n>>m;
for (int i=1; i<=n; i++) v[i]=i;
int op, x, y;
for (int i=1; i<=m; i++) {
fin>>op>>x>>y;
if (op==1) {
unite(root(x), root(y));
}
else {
if (root(x)==root(y)) fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}