Pagini recente » Cod sursa (job #1140091) | Cod sursa (job #2272507) | Cod sursa (job #1665747) | Cod sursa (job #3283880) | Cod sursa (job #1747192)
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
#define lim 100001
int N,M,P[lim],NR[lim];
int i,x,y,z;
int ca,cb;
int p(int a)
{
if (a==P[a])
return a;
return p(P[a]);
}
int main()
{
fi>>N>>M;
for (i=1;i<=N;i++)
{
P[i]=i;
NR[i]=1;
}
for (i=1;i<=M;i++)
{
fi>>z;
if (z==1)
{
fi>>x>>y;
ca=p(x);
cb=p(y);
if (ca==cb)
;
else if (cb>ca)
{
P[cb]=ca;
NR[cb]+=NR[ca];
}
else
{
P[ca]=cb;
NR[ca]+=NR[cb];
}
}
else
{
fi>>x>>y;
ca=p(x);
cb=p(y);
if (ca==cb)
fo<<"DA\n";
else
fo<<"NU\n";
}
}
fi.close();
fo.close();
return 0;
}