Pagini recente » Cod sursa (job #273828) | Cod sursa (job #1103947) | Cod sursa (job #178777) | Monitorul de evaluare | Cod sursa (job #3343594)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX=1e5;
int t[NMAX];
int s[NMAX];
int findRoot(int x){
while(t[x]!=x){
x=t[x];
}
return x;
}
int main(){
int n,m;
fin>>n>>m;
for(int i=0;i<NMAX;i++){
t[i]=i;
s[i]=1;
}
for(int i=0;i<m;i++){
int c,x,y;
fin>>c>>x>>y;
if(c==1){
x=findRoot(x);
y=findRoot(y);
if(s[x]>s[y]){
t[y]=x;
s[x]+=s[y];
}else{
t[x]=y;
s[y]+=s[x];
}
}else if(c==2){
if(findRoot(x)==findRoot(y)){
fout<<"DA"<<'\n';
}else{
fout<<"NU"<<'\n';
}
}
}
return 0;
}