Cod sursa(job #2946728)
| Utilizator | Data | 25 noiembrie 2022 01:30:25 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 1.15 kb |
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int nodes, ops, op;
fin>>nodes>>ops;
vector<int> parents(nodes+1);
for(int i = 1; i <= nodes; i++){
parents[i] = i;
}
while(ops){
ops--;
fin>>op;
int node1, node2;
fin>>node1>>node2;
switch(op){
case 1:
if(parents[node1] != parents[node2]){
int q = parents[node1];
for(int i = 1; i <= nodes; i++){
if(parents[i] == q){
parents[i] = parents[node2];
}
}
}
break;
case 2:
if(parents[node1] == parents[node2]){
fout<<"DA"<<endl;
}else{
fout<<"NU"<<endl;
}
break;
default:
fout<<"Error";
}
}
fin.close();
fout.close();
return 0;
}
