Pagini recente » Cod sursa (job #1986552) | Cod sursa (job #113939) | Cod sursa (job #1102952) | Cod sursa (job #2098635) | Cod sursa (job #1834942)
#include <bits/stdc++.h>
using namespace std;
int n,par[100005],r[100005],m,x,y,z;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int Find(int nod){
if(par[nod]==nod) return nod;
par[nod]=Find(par[nod]);
return par[nod];
}
void Unite(int x,int y){
int rx=Find(x),ry=Find(y);
if(r[rx]>r[ry]) par[ry]=rx;
else if(r[rx]<r[ry]) par[rx]=ry;
else par[rx]=ry,r[ry]++;
}
int main(){
in >> n >> m;
for(int i=1;i<=n;i++) par[i]=i;
for(int i=1;i<=m;i++){
in >> x >> y >> z;
if(x==1) Unite(y,z);
if(x==2){
if(Find(y)==Find(z)) out << "DA";
else out << "NU";
}
}
}