Pagini recente » Cod sursa (job #2505346) | Cod sursa (job #803593) | Cod sursa (job #2559823) | Cod sursa (job #645408) | Cod sursa (job #2283101)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100008],rang[100008],n,m,p,x,y;
int radacina(int x)
{
int r=x;
while(tata[r]!=r)r=tata[r];
while(tata[x]!=x)
{
int aux=x;
x=tata[x];
tata[aux]=r;
}
return r;
}
int main()
{f>>n>>m;
for(int i=1;i<=n;i++)
{tata[i]=i;rang[i]=1;}
for(int i=1;i<=m;i++)
{
f>>p>>x>>y;
if(p==1)
{
int rx=radacina(x);
int ry=radacina(y);
if(rang[rx]>rang[ry])
tata[ry]=rx;
else tata[rx]=ry;
if(rang[rx]==rang[ry])rang[ry]++;
}
else
{
int rx=radacina(x);
int ry=radacina(y);
if(rx==ry)
g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}