Pagini recente » Cod sursa (job #3256508) | Cod sursa (job #1674454) | Cod sursa (job #2668302) | Cod sursa (job #2637489) | Cod sursa (job #3268533)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int daddy[100000], sz[100000];
inline void init(const int& n)
{
for(int i=0; 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";
else
cout<<"NU";
}
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;
}