Pagini recente » Cod sursa (job #2819921) | Cod sursa (job #957791) | Cod sursa (job #2036837) | Cod sursa (job #1846742) | Cod sursa (job #2569295)
//ALEXANDRU MICLEA
#include <bits/stdc++.h>
using namespace std;
#include <fstream>
ifstream fin("disjoint.in"); ofstream fout("disjoint.out");
//VARIABLES
int tata[100005];
int nrelem[100005];
int m, n, c;
//FUNCTIONS
int stramos(int q){
if (q != tata[q]){
tata[q] = stramos(tata[q]);
}
return tata[q];
}
void unite(int a, int b){
if (nrelem[tata[a]] > nrelem[tata[b]]){
int cop = nrelem[tata[b]];
tata[a] = tata[b];
nrelem[tata[a]] += cop;
} else {
int cop = nrelem[tata[a]];
tata[b] = tata[a];
nrelem[tata[b]] += cop;
}
}
//MAIN
int main() {
fin >> n >> m;
for (int i = 1; i <= n; i++){
tata[i] = i;
nrelem[i] = 1; ///aici era i
}
for (int i = 1; i <= m; i++){
int x, y;
fin >> c >> x >> y;
if (c == 1) unite(stramos(x), stramos(y));
else{
if (stramos(x) == stramos(y)) fout << "DA\n";
else fout << "NU\n";
}
}
}