Pagini recente » Cod sursa (job #1775016) | Cod sursa (job #683798) | Cod sursa (job #458230) | Cod sursa (job #178376) | Cod sursa (job #1549595)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int cod,n,m;
int dad[100005],sons[100001],i,x,y,a,b;
int root(int x)
{
if(dad[x]==x)
return x;
else return(root(dad[x]));
}
void join(int x,int y)
{ int r1=root(x);
int r2=root(y);
if(r1==r2) return;
if(sons[r1]>=sons[r2])
{
sons[r1]+=sons[r2];
dad[r2]=r1;
}
else
{
sons[r2]+=sons[r1];
dad[r1]=r2;
}
}
void work()
{
fi>>n>>m;
for(i=1;i<=n;i++)
{
dad[i]=i;
sons[i]=1;
}
for(i=1;i<=m;i++)
{
fi>>cod>>x>>y;
if(cod==1)
{
join(x,y);
}
if(cod==2)
{
if(root(x)==root(y))
fo<<"DA"<<"\n";
else
fo<<"NU"<<"\n";
}
}
}
int main()
{
work();
return 0;
}