Pagini recente » Cod sursa (job #2758881) | Cod sursa (job #1856256) | Cod sursa (job #1377696) | Cod sursa (job #3191458) | Cod sursa (job #3258496)
#include<bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout("disjoint.out");
int dim[100002],tata[100002];
int father (int x)
{
if (x!=tata[x])
return father(tata[x]);
return tata[x];
}
void unire (int x,int y)
{
int tatax=father(x),tatay=father(y);
if (dim[tatax]<dim[tatay])
{
dim[tatay]+=dim[tatax];
tata[tatax]=tatay;
}
else
{
dim[tatax]+=dim[tatay];
tata[tatay]=tatax;
}
}
int main ()
{
int tip,n,i,q,x,y;
fin>>n>>q;
for (i=1;i<=n;++i)
dim[i]=1,tata[i]=i;
for (;q>0;--q)
{
fin>>tip>>x>>y;
if (tip==1)
unire (x,y);
else
{
if(father(x)!=father(y))
fout<<"NU";
else fout<<"DA";
fout<<'\n';
}
}
return 0;
}