Pagini recente » Cod sursa (job #2199976) | Cod sursa (job #2090263) | Cod sursa (job #1869238) | Cod sursa (job #2669808) | Cod sursa (job #3286689)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,q,tata[100200],rang[100200];
int rad(int x){
if(tata[x]==x)
return x;
tata[x]=rad(tata[x]);
return tata[x];
}
void uneste(int a,int b)
{
int ra=rad(a), rb=rad(b);
if(ra==rb)
return ;
if(rang[ra]>rang[rb])
tata[rb]=ra;
else
{
tata[ra]=rb;
if(rang[ra]==rang[rb])
rb++;
}
}
int32_t main()
{
f>>n>>q;
for(int i=1; i<=n; i++)
tata[i]=i;
for(int i=1; i<=q; i++)
{
int op,x,y;
f>>op>>x>>y;
if(op==1)
uneste(x,y);
else
if(rad(x)==rad(y))
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}