Pagini recente » Cod sursa (job #1015147) | Cod sursa (job #1648111) | Cod sursa (job #453112) | Cod sursa (job #3196244) | Cod sursa (job #2084317)
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
const int nmax=1e5+5;
int n,m,P[nmax],cod,x,y;
int radacina(int v)
{
if(P[v]<0)
return v;
else
return radacina(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)
{
if(P[x]>0)
P[x]=radacina(x);
if(P[y]>0)
P[y]=radacina(y);
reuniune(x,y);
}
else
{
if(P[x]>0)
P[x]=radacina(x);
if(P[y]>0)
P[y]=radacina(y);
if((P[x]==P[y] && P[x]>0) || (P[x]<0 && x==P[y]) || (P[y]<0 && y==P[x]))
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}