Pagini recente » Cod sursa (job #2063774) | Cod sursa (job #1597906) | Cod sursa (job #2829334) | Cod sursa (job #973444) | Cod sursa (job #3158440)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout("disjoint.out");
long long T[100002],n,i,x,y,t,m;
long long get_root(long long x)
{
long long c=x;
while(T[x]!=0)
x=T[x];
long long node=c;
while(node!=x)
{
c=T[node];
T[node]=x;
node=c;
}
return x;
}
void join(long long x,long long y)
{
long long root_a=get_root(x);
long long root_b=get_root(y);
if(root_a==root_b)
return ;
if(T[root_a]>=T[root_b])
T[root_b]=root_a;
else
T[root_a]=root_b;
}
bool query(long long x,long long y){ return get_root(x)==get_root(y);}
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>t>>x>>y;
if(t==1)
join(x,y);
else
if(query(x,y))
fout<<"DA"<<"\n";
else
fout<<"NU"<<"\n";
}
return 0;
}