Pagini recente » Cod sursa (job #1523343) | Cod sursa (job #1840528) | Cod sursa (job #1223693) | Cod sursa (job #2863356) | Cod sursa (job #2419681)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int tata[100001],grad[100001];
int findf(int nod){
if(tata[nod]==nod)
return nod;
int x=findf(tata[nod]);
tata[nod]=x;
return x;
}
int main()
{
int n,m,cod,x,y;
cin>>n>>m;
for(int i=1;i<=n;i++){
tata[i]=i;
grad[i]=1;
}
for(int i=1;i<=m;i++){
cin>>cod>>x>>y;
if(cod==1){
int fx,fy;
fx=findf(x);
fy=findf(y);
if(grad[fx]<grad[fy]){
tata[fx]=fy;
grad[fy]+=grad[fx];
}
else{
tata[fy]=fx;
grad[fx]+=grad[fy];
}
}
if(cod==2){
int tatax=findf(x);
int tatay=findf(y);
if(tatax==tatay)
cout<<"DA"<<"\n";
else
cout<<"NU"<<"\n";
}
}
return 0;
}