Pagini recente » Cod sursa (job #266230) | Cod sursa (job #113929) | Cod sursa (job #1698042) | Cod sursa (job #722902) | Cod sursa (job #2939971)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m;
vector<int> parinti(100001, 0);
vector<int> ranc(100001, 0);
int cod, x, y;
int get_root(int x) {
if (parinti[x] == x) {
return x;
}
return parinti[x] = get_root(parinti[x]);
}
void unionn(int a, int b){
if(ranc[a] > ranc[b]){
parinti[b] = a;
ranc[a] += ranc[b];
}
else{
parinti[a] = b;
ranc[b] += ranc[a];
}
}
int main() {
f >> n >> m;
for(int i = 1; i <= n; i++){
parinti[i] = i;
ranc[i] = 1;
}
for (int i = 1; i <= m; i++) {
f >> cod >> x >> y;
if (cod == 1)
unionn(get_root(x), get_root(y));
else {
if (get_root(x) == get_root(y))
g << "DA\n";
else
g << "NU\n";
}
}
return 0;
}