Pagini recente » Cod sursa (job #2851711) | Cod sursa (job #1084657) | Cod sursa (job #140228) | Cod sursa (job #254763) | Cod sursa (job #1540212)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 100001
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int n, m;
int op, x, y;
int T[nmax], Nr[nmax];
int root(int nod)
{
if (nod = T[nod])
return nod;
return root(T[nod]);
}
int main()
{
fi >> n >> m;
// initialize
for (int i = 1; i <= n; i++)
T[i] = i, Nr[i] = 1;
for (int i = 1; i <= m; i++)
{
fi >> op >> x >> y;
int tX = root(x);
int tY = root(y);
if (op == 1)
{
// reuniune de multimi
if (Nr[tX] >= Nr[tY])
{
Nr[tX] += Nr[tY];
T[tY] = tX;
}
else
{
Nr[tY] += Nr[tX];
T[tX] = tY;
}
}
else
{
// query
if (tX == tY)
fo << "DA\n";
else
fo << "NU\n";
}
}
fi.close();
fo.close();
return 0;
}