Pagini recente » Cod sursa (job #227689) | Cod sursa (job #1478808) | Cod sursa (job #1526475) | Cod sursa (job #947613) | Cod sursa (job #1455442)
#include <iostream>
#include <fstream>
using namespace std;
int N,p[100000],sz[100000],V,E,op,num1,num2;
int findset(int x)
{
int f=x;
while(x!=p[x])
x=p[x];
p[f]=x;
return x;
}
bool issameset(int x,int y)
{
int f=findset(x);
int g=findset(y);
if(f==g)
return true;
return false;
}
void uni(int x,int y)
{
int f=findset(x);
int g=findset(y);
if(f==g)
return;
if(sz[f]>sz[g])
p[g]=f,sz[f]+=sz[g];
else
p[f]=g,sz[g]+=sz[f];
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
cin>>V;
for(int i=1;i<=V;i++)
p[i]=i,sz[i]=1;
cin>>E;
while(E--)
{
cin>>op>>num1>>num2;
if(op==1)
uni(num1,num2);
if(op==2)
if(issameset(num1,num2))
cout<<"DA\n";
else
cout<<"NU\n";
}
return 0;
}