Pagini recente » Cod sursa (job #2119652) | Cod sursa (job #47756) | Cod sursa (job #913245) | Cod sursa (job #2491113) | Cod sursa (job #2140401)
#include <bits/stdc++.h>
#define nmax 100002
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n,m,t[nmax],r[nmax];
int findd(int q){
int R,y;
for(R=q;t[R]!=R;R=t[R]);
while(t[q]!=q){
y=t[q];
t[q]=R;
q=y;
}
return R;
}
void merg(int q, int qq){
if(r[q]>r[qq])
t[qq]=q;
else
t[q]=qq;
if(r[qq]==r[q])r[qq]++;
}
int main()
{
int a,b,c;
fin>>n>>m;
for(int i=1;i<=n;++i){
r[i]=1;
t[i]=i;
}
for(int i=1;i<=m;++i){
fin>>a>>b>>c;
if(a==2){
if(findd(b)==findd(c))fout<<"DA\n";
else fout<<"NU\n";
}
else{
merg(findd(b),findd(c));
}
}
return 0;
}