Pagini recente » Cod sursa (job #1163187) | Cod sursa (job #2583637) | Cod sursa (job #1626143) | Cod sursa (job #2373216) | Cod sursa (job #2679420)
#include <fstream>
#include <vector>
using namespace std;
int n, m;
vector<int> r;
vector<int> p;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int get(int node)
{
while (p[node] != node)
node = p[node];
return node;
}
void makeUnion(int a, int b)
{
a = get(a);
b = get(b);
if (r[a] == r[b])
r[a]++;
if (r[a] > r[b])
p[b] = a;
else
p[a] = b;
}
int main()
{
in >> n >> m;
int x, y, z;
r.push_back(0);
p.push_back(0);
for (int i = 1; i <= n; i++)
{
r.push_back(0);
p.push_back(i);
}
for (int i = 0; i < m; i++)
{
in >> x >> y >> z;
if (x == 1)
makeUnion(y, z);
else
{
if (get(y) == get(z))
out << "DA\n";
else
out << "NU\n";
}
}
return 0;
}