Pagini recente » Cod sursa (job #279603) | Cod sursa (job #581883) | Cod sursa (job #948179) | Cod sursa (job #2086298) | Cod sursa (job #2945086)
#include <bits/stdc++.h>
using namespace std;
/// ex 1 infoarena Retea2
//void ex1(){
// vector<vector<int>> lista;
// vector<int> centrale;
// ifstream fin("retea2.in");
// ofstream fout("retea2.out");
// int n, m;
// fin>>n>>m;
//
//}
///ex 2 infoarena Disjoint
vector<int> tati;
int find(int x){
int radacina = x;
while(radacina != tati[radacina])
radacina = tati[radacina]; //partea de find
while(x != radacina){ // ca sa leg toate nodurile de radacina
int y = tati[x];
tati[x] = radacina;
x = y;
}
return radacina;
}
void unite(int x, int y){
int a = find(x);
int b = find(y);
if(a!=b)
tati[b] = a;
}
void ex2() {
int n, m;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
fin >> n >> m;
tati.resize(n + 1);
for (int i = 1; i <= n; i++) {
tati[i] = i;
}
int cod, x, y;
for (int i = 0; i < m; i++) {
fin >> cod >> x >> y;
if (cod == 1) {
unite(x, y);
} else {
if (find(x) == find(y))
fout << "DA\n";
else fout << "NU\n";
}
}
}
int main(){
ex2();
return 0;
}