Pagini recente » Cod sursa (job #635617) | Cod sursa (job #79535) | Cod sursa (job #1783130) | Cod sursa (job #2229765) | Cod sursa (job #1747642)
#include<fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,i,rang[100001],tata[100001],q,x,y;
void reun(int x,int y){
if (rang[x]<rang[y]) tata[x]=y;
else
tata[y]=x;
if (rang[x]==rang[y]) rang[x]++;
}
int rad(int x){
int r,t,aux;
r=x;
while(tata[r]!=r) r=tata[r];
aux=x;
while(aux!=r){
t=tata[aux];
tata[aux]=r;
aux=t;
}
return r;
}
int main(){
fin>>n>>m;
for (i=1;i<=n;i++)
{
tata[i]=i;
rang[i]=1;
}
for (i=1;i<=m;i++){
fin>>q>>x>>y;
if (q==1) reun(rad(x),rad(y));
else
if (rad(x)==rad(y)) fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
fin.close();
fout.close();
return 0;
}