Pagini recente » Cod sursa (job #1827146) | Cod sursa (job #1672477) | Cod sursa (job #1627213) | Cod sursa (job #851012) | Cod sursa (job #1747471)
#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;
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;
}