Pagini recente » Cod sursa (job #1118942) | Cod sursa (job #2114530) | Rating Andi Koleci (Andi218) | Cod sursa (job #1755951) | Cod sursa (job #2045424)
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <stdio.h>
#include <string.h>
#include <climits>
#include <set>
const int maxn = 50001;
const int inf = 1 << 30;
FILE *in = fopen("disjoint.in","r"), *out = fopen("disjoint.out","w");
using namespace std;
vector<int> parent;
void addUnions(int x, int y) {
std::cout << "Add:" << x << " " << y << "\n";
while(parent[x] != x) {
x = parent[x];
}
while(parent[y] != y) {
y = parent[y];
}
parent[y] = x;
std::cout << "Done\n";
}
void sameUnion(int x, int y) {
std::cout << "Same:" << x << " " << y << "\n";
while(parent[x] != x) {
x = parent[x];
}
while(parent[y] != y) {
y = parent[y];
}
string res = (x == y) ? "DA\n" : "NU\n";
std::cout << res;
fprintf(out, "%s", (x == y) ? "DA\n" : "NU\n");
}
int main()
{
int n, m, type, x, y;
fscanf(in, "%d %d", &n, &m);
parent.resize(n);
for (int i = 0; i< n; ++i) {
parent[i] = i;
}
for (int i = 0; i< m; ++i) {
fscanf(in, "%d %d %d", &type, &x, &y);
if (type == 1)
addUnions(x, y);
else
sameUnion(x, y);
}
}