Pagini recente » Monitorul de evaluare | Cod sursa (job #1804790) | Cod sursa (job #2312829) | Cod sursa (job #267417) | Cod sursa (job #3332958)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,t[100002],sze[100002];
int finde(int u){
if(t[u]==u)
return u;
return t[u]=finde(t[u]);
}
void merghe(int u,int v){
u=finde(u);
v=finde(v);
if(u==v)
return;
if(sze[u]<sze[v])
swap(u,v);
t[v]=u;
sze[u]+=sze[v];
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
t[i]=i,sze[i]=1;
for(;m-->0;){
int cod,x,y;
fin>>cod>>x>>y;
if(cod==1){
merghe(x,y);
continue;
}
x=finde(x);
y=finde(y);
if(x==y)
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
return 0;
}