Pagini recente » Cod sursa (job #517090) | Cod sursa (job #2092359) | Cod sursa (job #517088) | Cod sursa (job #517086) | Cod sursa (job #3304488)
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int parent[N], sz[N];
int findparent(int x){
if (parent[x]==x){
return x;
}
return parent[x]=findparent(parent[x]);
}
void unite(int a, int b){
int roota=findparent(a);
int rootb=findparent(b);
if (roota!=rootb){
if (sz[rootb]>sz[roota]){
swap(roota, rootb);
}
parent[rootb]=roota;
sz[roota]+=sz[rootb];
}
}
int main()
{
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m;cin>>n>>m;
for (int i=1;i<=n;i++){
parent[i]=i;
sz[i]=1;
}
for (int i=0;i<m;i++){
int t,u,v;
cin>>t>>u>>v;
if (t==1){
unite(u, v);
}
else if (t==2){
int rootu=findparent(u);
int rootv=findparent(v);
if (rootu==rootv){
cout<<"DA\n";
}
else{
cout<<"NU\n";
}
}
}
return 0;
}