Pagini recente » Cod sursa (job #532825) | Cod sursa (job #1401048) | Cod sursa (job #1258363) | Cod sursa (job #1694405) | Cod sursa (job #2675894)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int findNode(int node, vector<int>& T)
{
if(node != T[node])
return T[node] = findNode(T[node], T);
return node;
}
void unire(int node1, int node2, vector<int>& T)
{
int m1 = findNode(node1, T);
int m2 = findNode(node2, T);
T[m1] = m2;
}
int main()
{
int n,m;
in >> n >> m;
vector<int> T(n + 2, 0);
for(int i = 1; i<=n; ++i)
T[i] = i;
for(int op, node1, node2; m; --m)
{
in >> op >> node1 >> node2;
if(op == 1)
{
unire(node1, node2, T);
}
else
{
if(findNode(node1, T) != findNode(node2, T))
out << "NU";
else
out << "DA";
out << '\n';
//cout << findNode(node1,T) == findNode(node2, T) ? "DA" : "NU" << '\n';
}
}
return 0;
}