Pagini recente » Cod sursa (job #2645413) | Cod sursa (job #1061265) | Cod sursa (job #2519037) | Cod sursa (job #291717) | Cod sursa (job #3267108)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N,M,parent[100005],h[100005],i,j,type,a,b;
int Find(int x){
if (parent[x] == x) return x;
return parent[x] = Find(parent[x]);
}
void Join(int a,int b){
a = Find(a);
b = Find(b);
if (a == b) return;
if (h[a] > h[b])
parent[b] = a;
else if (h[a] < h[b])
parent[a] = b;
else{
parent[a] = b;
h[a]++;
}
}
bool Same(int a,int b){
return Find(a) == Find(b);
}
int main()
{
fin >> N >> M;
for (i = 1;i <= N;i++){
parent[i] = i;
h[i] = 0;
}
for (i = 1;i <= M;i++){
fin >> type >> a >> b;
if (type == 1){
Join(a,b);
}
else if (Same(a,b))
fout << "DA\n";
else
fout << "NU\n";
}
return 0;
}