Pagini recente » Cod sursa (job #2867101) | Cod sursa (job #957109) | Cod sursa (job #894421) | Cod sursa (job #1408123) | Cod sursa (job #1747835)
#include<fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int P[100005];
int NR[100005];
int M,N;
int tip,x,y;
int radacina(int a)
{
if(P[a]==a)
return a;
return radacina(P[a]);
}
void reuniune(int des,int cel)
{
P[cel]=des;
NR[des]+=NR[cel];
}
void actualizare(int a, int b)
{
int ra,rb;
ra=radacina(a);
rb=radacina(b);
if(NR[ra]<NR[rb])
reuniune(rb,ra);
else
reuniune(ra,rb);
}
bool prieteni(int a, int b)
{
if(radacina(a)==radacina(b))
return true;
return false;
}
int main()
{
fi>>N>>M;
for(int i=1;i<=N;i++)
{
P[i]=i;
NR[i]=1;
}
for(int i=1;i<=M;i++)
{
fi>>tip>>x>>y;
if(tip==1)
actualizare(x,y);
else
{
if(prieteni(x,y))
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}