Pagini recente » Cod sursa (job #896103) | Cod sursa (job #2133861) | Cod sursa (job #2368661) | Cod sursa (job #3224219) | Cod sursa (job #2804131)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,tata[100002], dim[100002];
int find(int x){
while (x != tata[x])
x = tata[x];
return x;
}
void uneste(int x, int y) {
int tataX = find(x);
int tataY = find(y);
if (dim[tataX] >= dim[tataY]) {
tata[tataY] = tataX;
dim[tataX] += dim[tataY];
} else {
tata[tataX] = tataY;
dim[tataY] += dim[tataX];
}
}
int main() {
int x,y,cod;
fin >> n >> m;
for (int i=0; i<n; i++) {
tata[i] = i;
dim[i] = 1;
}
for (int i=0; i<m; i++){
fin >> cod >> x >> y;
if (cod == 1)
uneste(x,y);
else if (find(x) == find(y))
fout << "DA\n";
else fout << "NU\n";
}
return 0;
}