Pagini recente » Cod sursa (job #1782955) | Cod sursa (job #1625836) | Cod sursa (job #2098589) | Cod sursa (job #504505) | Cod sursa (job #1747200)
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int i;
int P[100001],NR[100001];
int N,M,op;
int tip,a,b;
int rada, radb;
int p(int v)
{
if (v==P[v])
return v;
else
return p(P[v]);
}
int main()
{
fi>>N>>M;
for (i=1;i<=N;i++)
{
P[i]=i;
NR[i]=1;
}
for (op=1;op<=M;op++)
{
fi>>tip;
if (tip==1)
{
fi>>a>>b;
// reuniune a multimilor in care se afla a si b
rada=p(a);
radb=p(b);
if (rada==radb)
;
else
if (NR[rada]<=NR[radb])
{
NR[radb]+=NR[rada];
P[rada]=radb;
}
else
{
NR[rada]+=NR[radb];
P[radb]=rada;
}
}
else
{
fi>>a>>b;
rada=p(a);
radb=p(b);
if (rada==radb)
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}