Pagini recente » Cod sursa (job #2192224) | Cod sursa (job #1234093) | Cod sursa (job #1224048) | Cod sursa (job #995363) | Cod sursa (job #3350070)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int const lmax=1e5+7;
int n,m;
int t[lmax];
int h[lmax];
int root(int node)
{
if(t[node]==0)return node;
int aux=root(t[node]);
t[node]=aux;
return aux;
}
void merger(int n1, int n2)
{
int r1=root(n1);
int r2=root(n2);
if(r1==r2)return;
if(h[r1]==h[r2])
{
h[r1]++;
t[r2]=r1;
}
else if(h[r1]<h[r2])t[r1]=r2;
else t[r2]=r1;
}
int main()
{
fin>>n>>m;
for(int i=0;i<m;i++)
{
int a,b,op;
fin>>op>>a>>b;
if(op==1)
{
merger(a,b);
}
else
{
int ra=root(a);
int rb=root(b);
if(ra==rb)fout<<"DA\n";
else fout<<"NU\n";
}
}
fin.close();
fout.close();
return 0;
}