Pagini recente » Cod sursa (job #281776) | Cod sursa (job #2833944) | Rating Alex Rusu (alex-rusu) | Cod sursa (job #1974773) | Cod sursa (job #1332674)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int p[100005],h[100005],n,m;
int root (int x) {
if(p[x] < 0) return x;
p[x] = root(p[x]);
return p[x];
}
int unire(int rx, int ry)
{
if (h[rx]>h[ry])
{
p[ry]=rx;
h[rx]+=h[ry];
}
else
{
p[rx]=ry;
h[ry]+=h[rx];
}
}
int main()
{
int op,x,y;
f>>n>>m;
for(int i=1; i<=n; i++) p[i]=-1;
for (int i=0; i<m; i++) {
f>>op>>x>>y;
int rootX = root(x);
int rootY = root(y);
if (op==2) {
if (rootX==rootY) g<<"DA\n";
else g<<"NU\n";
}
else {
if (rootX!=rootY)
unire(rootX, rootY);
}
return 0;
}
}