Pagini recente » Diferente pentru utilizator/relaconscot84 intre reviziile 2 si 1 | Cod sursa (job #3302961) | Cod sursa (job #2209776) | Cod sursa (job #3302962) | Cod sursa (job #2203224)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int t[100001],nre[100001];
int radacina(int val)
{
if(t[val]==0)
return val;
t[val]=radacina(t[val]);
return t[val];
}
bool verif(int x,int y)
{
return (radacina(x)==radacina(y));
}
void reuniune(int x,int y)
{
int rx=radacina(x),ry=radacina(y);
if(rx==ry)
return;
if(nre[rx]>nre[ry])
{
nre[rx]+=ry;
t[ry]=rx;
}
else
{
nre[ry]+=rx;
t[rx]=ry;
}
}
int main()
{
int n,m,c,x,y,i;
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>c>>x>>y;
if(c==2)
{
if(verif(x,y))
out<<"DA\n";
else
out<<"NU\n";
}
else
reuniune(x,y);
}
return 0;
}