Pagini recente » Cod sursa (job #870627) | Cod sursa (job #222661) | Cod sursa (job #1830709) | Cod sursa (job #2886836) | Cod sursa (job #2500559)
//#include <iostream>
#include <fstream>
using namespace std;
int sz[100005];
int tata[100005];
int big_daddy(int a){
int aux=a;
while(aux!=tata[aux]){
aux=tata[aux];
}
while(a!=tata[a]){
int auxi=tata[a];
tata[a]=aux;
a=auxi;
}
return aux;
}
bool check(int a,int b){
if(big_daddy(a)==big_daddy(b))
return true;
return false;
}
void unite(int a,int b){
int ta=big_daddy(a),tb=big_daddy(b);
if(ta!=tb){
if(sz[ta]>sz[tb]){
tata[tb]=ta;
sz[ta]+=sz[tb];
}
else{
tata[ta]=tb;
sz[tb]+=sz[ta];
}
}
}
int main()
{
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n,m,cer,a,b;
cin>>n>>m;
for(int i=1;i<=n;i++){
sz[i]=1;
tata[i]=i;
}
for(int i=1;i<=m;i++){
cin>>cer;
if(cer==1){
cin>>a>>b;
unite(a,b);
}
else{
cin>>a>>b;
if(check(a,b)==true){
cout<<"DA\n";
}
else{
cout<<"NU\n";
}
}
}
return 0;
}