Pagini recente » Cod sursa (job #3189140) | Cod sursa (job #2839112) | Cod sursa (job #2843988) | Cod sursa (job #451181) | Cod sursa (job #3286176)
#include <bits/stdc++.h>
using namespace std;
int t[100005],rang[100005];;
int Find(int x)
{
int y=t[x];
if(y==t[y])return y;
return t[y]=Find(y);
}
void Union(int x, int y)
{
int sefx=Find(x);
int sefy=Find(y);
if(rang[sefx]<rang[sefy])
{
t[sefx]=sefy;
}
else if(rang[sefx]>rang[sefy])
{
t[sefy]=sefx;
}
else
{
t[sefx]=sefy;
rang[sefy]++;
}
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
cin.sync_with_stdio(false);
cin.tie(0);
int n,q;
cin>>n>>q;
for(int i=1; i<=n; ++i)
{
t[i]=i;
rang[i]=1;
}
while(q--)
{
int tip,x,y;
cin>>tip>>x>>y;
if(tip==1)
{
Union(x,y);
}
else
{
if(Find(x)==Find(y))cout<<"DA\n";
else cout<<"NU\n";
}
}
return 0;
}