Pagini recente » Istoria paginii runda/forta/clasament | Cod sursa (job #594295) | Istoria paginii runda/lanitam_urtimud | Cod sursa (job #157114) | Cod sursa (job #2704780)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,i,j,tata[100005],rang[100005];
int gaseste(int x)
{
if(tata[x]!=x)
tata[x]=gaseste(tata[x]);
return tata[x];
}
void unire(int rx,int ry)
{
if(rang[rx]>rang[ry])
{
rang[rx]+=rang[ry];
tata[ry]=rx;
}
else
{
rang[ry]+=rang[rx];
tata[rx]=ry;
}
}
int main()
{
int tip,x,y,rad1,rad2;
fin>>n>>m;
for(i=1;i<=n;i++)
{
tata[i]=i;
rang[i]=1;
}
for(i=1;i<=m;i++)
{
fin>>tip>>x>>y;
if(tip==1)
{
rad1=gaseste(x);
rad2=gaseste(y);
if(rad1!=rad2)
unire(rad1,rad2);
}
else
{
if(gaseste(x)==gaseste(y))
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
}
return 0;
}