Pagini recente » Cod sursa (job #2877054) | Cod sursa (job #628534) | Cod sursa (job #2778016) | Cod sursa (job #2727925) | Cod sursa (job #3293785)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[100003],rang[100003];
inline int findtata(int nod)
{
if (tata[nod]!=nod)
tata[nod]=findtata(tata[nod]);
return tata[nod];
}
inline void combina(int a,int b)
{
a=findtata(a);
b=findtata(b);
if (rang[a]>rang[b]) tata[b]=a;
else if (rang[b]>rang[a]) tata[a]=b;
else
{
tata[b]=a;
rang[a]++;
}
}
int n,m,op,x,y;
int main()
{
fin>>n>>m;
for (int i=1;i<=n;i++)
tata[i]=i;
while (m--)
{
fin>>op>>x>>y;
if (op==1) combina(x,y);
else
{
if (findtata(x)==findtata(y))
fout<<"DA";
else
fout<<"NU";
fout<<'\n';
}
}
return 0;
}