Pagini recente » Cod sursa (job #1736621) | Cod sursa (job #2564488) | Cod sursa (job #2076972) | Cod sursa (job #576465) | Cod sursa (job #2084331)
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
const int nmax=100005;
int n,m,P[nmax],cod,x,y,tata_x,tata_y;
int radacina(int v)
{
if(P[v]<0)
return v;
P[v]=radacina(P[v]);
return P[v];
}
void reuniune(int x,int y)
{
if(-P[x]>=-P[y])
{
P[x]+=P[y];
P[y]=x;
}
else
{
P[y]+=P[x];
P[x]=y;
}
}
int main()
{
fi>>n>>m;
for(int i=1;i<=n;i++)
P[i]=-1;
for(int i=1;i<=m;i++)
{
fi>>cod>>x>>y;
if(cod==1)
{
tata_x=radacina(x);
tata_y=radacina(y);
reuniune(tata_x,tata_y);
}
else
{
tata_x=radacina(x);
tata_y=radacina(y);
if(tata_x==tata_y)
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}