Pagini recente » Cod sursa (job #101710) | Cod sursa (job #3155390) | Cod sursa (job #3146736) | Cod sursa (job #2939091) | Cod sursa (job #3268534)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int daddy[100001], sz[100001];
inline void init(const int& n)
{
for(int i=1; i<=n; i++)
daddy[i]=i, sz[i]=1;
}
int find(const int& tbf)
{
if(daddy[tbf]==tbf)
return tbf;
return daddy[tbf]=find(daddy[tbf]);
}
void Union(int& x, int& y)
{
x=find(x);
y=find(y);
if(x!=y)
{
if(sz[y]<sz[x])
swap(x, y);
daddy[x]=y;
sz[x]+=sz[y];
}
}
void op2(const int& x, const int& y)
{
if(find(x)==find(y))
cout<<"DA\n";
else
cout<<"NU\n";
}
int main()
{
ios::sync_with_stdio(false);
int n, m;
cin>>n>>m;
init(n);
int op, x, y;
for(int i=0; i<m; i++)
{
cin>>op>>x>>y;
if(op==2)
op2(x, y);
else
Union(x, y);
}
return 0;
}