Pagini recente » Cod sursa (job #1512846) | Cod sursa (job #1940979) | Cod sursa (job #474879) | Cod sursa (job #76431) | Cod sursa (job #1551551)
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
void print_data (int x, int y){
ofstream fout ("disjoint.out");
if (x == y)
fout << "DA\n";
else
fout << "NU\n";
}
void quick_union (int x, int y, int v[]){
if (v[x] < v[y]){
v[x] += v[y];
v[y] = x;
}
else{
v[y] += v[x];
v[x] = y;
}
}
int find_root (int x, int v[]){
if (v[x] < 0)
return x;
return v[x] = find_root (v[x], v);
}
void get_data (int &n, int v[]){
int m, x, y, op;
for (int i = 0; i <= n; i++)
v[i] = -1;
ifstream fin ("disjoint.in");
fin >> n >> m;
for (int i = 1; i <= m; i++){
fin >> op >> x >> y;
int root_x = find_root (x, v);
int root_y = find_root (y, v);
if (op == 1)
quick_union (root_x, root_y, v);
else
print_data (root_x, root_y);
}
}
int main(){
int n;
int v[nmax];
get_data (n, v);
return 0;
}