Pagini recente » Cod sursa (job #3131826) | Cod sursa (job #3209378) | Cod sursa (job #2122432) | Cod sursa (job #1672262) | Cod sursa (job #2946369)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector<int> v;
vector<int> rang;
int n,m,i,op,x,y;
int radacina(int k){
if(v[k] == 0)
return k;
else{
int x = radacina(v[k]);
v[k]=x;
return x;
}
}
void unu(int x, int y){
int xx=radacina(x),yy=radacina(y);
if(xx != yy){
if(rang[xx] > rang[yy])
v[yy]=xx;
else{
v[xx]=yy;
if(rang[xx] == rang[yy])
rang[yy]++;
}
}
}
void doi(int x, int y){
if(radacina(x) == radacina(y))
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
int main() {
fin >> n >> m;
v.assign(n + 1, 0);
rang.assign(n+1,0);
for(i=1;i<=m;i++){
fin >> op >> x >> y;
if(op==1)
unu(x, y);
else
doi(x,y);
}
}