Pagini recente » Cod sursa (job #2164274) | Cod sursa (job #209357) | Cod sursa (job #2662427) | Cod sursa (job #2663959) | Cod sursa (job #2773607)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("disjoint.in");
ofstream out("disjoint.out");
struct DSU {
int N; //nr of nodes
vector<int> prt; //parents
void initialize(int n)
{
N = n;
prt.resize(N + 1);
for (int i = 1; i <= n; i++)
{
prt[i] = i;
}
}
int find (int u)
{
if (u == prt[u])
{
return u;
}
return prt[u] = find (prt[u]);
}
void unite (int u, int v)
{
u = find(u);
v = find(v);
if (u != v)
{
prt[v] = u;
}
}
};
int main ()
{
int n, m;
in >> n >> m;
struct DSU dsu;
dsu.initialize(n);
for (int i = 1; i <= m; i ++)
{
int q, x, y;
in >> q >> x >> y;
if (q == 1)
{
dsu.unite (x, y);
}
if (q == 2)
{
if (dsu.find(x) == dsu.find(y))
out << "DA\n";
else out << "NU\n";
}
}
}