Pagini recente » Cod sursa (job #364944) | Cod sursa (job #3253487) | Cod sursa (job #740709) | Monitorul de evaluare | Cod sursa (job #3355612)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
#define cin fin
#define cout fout
int n,m,parinte[100005],a,b,tip,drum[100005];
int getroot(int a)
{
if(parinte[a]==a) return a;
parinte[a]=getroot(parinte[a]);
return parinte[a];
}
void unire(int a,int b)
{
a=getroot(a),b=getroot(b);
if(drum[a]<drum[b]) swap(a,b);
parinte[b]=a;
drum[a]+=drum[b];
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
parinte[i]=i;
drum[i]=1;
}
for (int i=1;i<=m;i++)
{
cin>>tip>>a>>b;
if(tip==1) unire(a,b);
else
{
a=getroot(a);
b=getroot(b);
if(a==b) cout<<"DA"<<'\n';
else cout<<"NU"<<'\n';
}
}
return 0;
}