Pagini recente » Cod sursa (job #2648915) | Cod sursa (job #1871668) | Cod sursa (job #791188) | Cod sursa (job #1364214) | Cod sursa (job #1348479)
#include <fstream>
using namespace std;
int getRoot(int m[], int x);
int main()
{
int N, M, x, y, i, op;
ifstream f("disjoint.in");
f >> N >> M;
int m[N + 1];
for (i = 1; i <= N; i++)
m[i] = i;
ofstream g("disjoint.out");
for (i = 1; i <= M; i++)
{
f >> op >> x >> y;
if (op == 1)
m[getRoot(m, y)] = x;
else if (op == 2)
{
if (getRoot(m, x) == getRoot(m, y))
g << "DA\n";
else
g << "NU\n";
}
}
f.close();
return 0;
}
int getRoot(int m[], int x)
{
int root = x;
while (m[root] != root)
root = m[root];
int aux;
while(x != m[x])
{
aux = m[x];
m[x] = root;
x = aux;
}
return root;
}