Pagini recente » Cod sursa (job #588081) | Cod sursa (job #2140460) | Cod sursa (job #1925156) | Statistici Tomoiaga Diana (tomoiagadiana) | Cod sursa (job #2073167)
#include <iostream>
#include <fstream>
#include <string>
#define NMAX 100000
int points[NMAX];
int lengths[NMAX];
using namespace std;
int rooter(int target) {
int root = target;
while (root != points[root]) {
root = points[root];
}
return root;
}
void unite(int point1, int point2) {
int root1 = rooter(point1);
int root2 = rooter(point2);
if (root1 != root2) {
points[root1] = root2;
}
}
int main() {
ifstream input("disjoint.in");
ofstream output("disjoint.out");
int n, m;
input >> n >> m;
for (int i = 0; i < n; ++i) {
points[i] = i;
}
int order, from, to;
for (int i = 0; i < m; ++i) {
input >> order >> from >> to;
if (order == 1) {
int p1 = rooter(from - 1);
int p2 = rooter(to - 1);
unite(p1, p2);
}
else {
if (rooter(from - 1) == rooter(to - 1)) {
output << "DA" << endl;
}
else {
output << "NU" << endl;
}
}
}
input.close();
output.close();
return 0;
}