Pagini recente » Cod sursa (job #1203870) | Cod sursa (job #299868) | Cod sursa (job #1965972) | Cod sursa (job #520315) | Cod sursa (job #2397178)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void uneste(int x, int y, int N, vector <int> &comp, vector < vector < int > > &rang){
if(comp[x] == comp[y])
return;
int cmpy = comp[y];
int cmpx = comp[x];
if(rang[cmpx].size() < rang[cmpy].size()){
for(unsigned i = 0;i < rang[cmpx].size();i++){
rang[cmpy].push_back(rang[cmpx][i]);
comp[rang[cmpx][i]] = cmpy;
}
}
else{
for(unsigned i = 0;i < rang[cmpy].size();i++){
rang[cmpx].push_back(rang[cmpy][i]);
comp[rang[cmpy][i]] = cmpx;
}
}
}
int main() {
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int N, M, cod, x, y;
f>>N>>M;
vector < int > comp(N + 1);
vector < vector < int > > rang(N + 1);
for(int i = 1; i <= N;i++){
comp[i] = i;
rang[i].push_back(i);
}
while(M){
f>>cod>>x>>y;
if(cod == 1){
uneste(x, y, N, comp, rang);
}
else {
if (comp[x] == comp[y])
g << "DA\n";
else g << "NU\n";
}
M--;
}
return 0;
}