Submission #1139349

#TimeUsernameProblemLanguageResultExecution timeMemory
1139349ansedraMonthly railway pass (LMIO18_menesinis_bilietas)C++20
100 / 100
1054 ms98580 KiB
#include <iostream> #include <vector> #include <map> using namespace std; const int Nmax = 500005; struct nod{ int componenta; vector<int> vecini_tren; }; struct muchie{ int nod1, nod2; }; struct comp{ int cate_orase; int cate_orase_atinge; }; int n, m, ind_componenta, sol; nod orase[Nmax]; comp componenta[Nmax]; vector<muchie> muchii_autobus; map<pair<int, int>, bool> unite; void citire(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int nod1, nod2; char tip; cin >> n >> m; for(int i = 1; i <= m; i++){ cin >> nod1 >> nod2 >> tip; if(tip == 'T'){ orase[nod1].vecini_tren.push_back(nod2); orase[nod2].vecini_tren.push_back(nod1); } else{ muchii_autobus.push_back({nod1, nod2}); } } } void dfs(int nod){ orase[nod].componenta = ind_componenta; componenta[ind_componenta].cate_orase++; for(int vecin : orase[nod].vecini_tren){ if(!orase[vecin].componenta){ dfs(vecin); } } } void procesare_componente_conexe(){ ind_componenta = 0; for(int i = 1; i <= n; i++){ if(!orase[i].componenta){ ind_componenta++; dfs(i); } } } void procesare_muchii_autobuz(){ for(int i = 1; i <= ind_componenta; i++){ unite[{i, i}] = 1; componenta[i].cate_orase_atinge = componenta[i].cate_orase; } for(muchie edge : muchii_autobus){ if(!unite[{orase[edge.nod1].componenta, orase[edge.nod2].componenta}]){ componenta[orase[edge.nod1].componenta].cate_orase_atinge += componenta[orase[edge.nod2].componenta].cate_orase; componenta[orase[edge.nod2].componenta].cate_orase_atinge += componenta[orase[edge.nod1].componenta].cate_orase; unite[{orase[edge.nod1].componenta, orase[edge.nod2].componenta}] = 1; unite[{orase[edge.nod2].componenta, orase[edge.nod1].componenta}] = 1; } } sol = 0; for(int i = 1; i <= ind_componenta; i++){ if(componenta[i].cate_orase_atinge == n){ sol += componenta[i].cate_orase; } } } void afisare_solutie(){ cout << sol; } int main(){ citire(); procesare_componente_conexe(); procesare_muchii_autobuz(); afisare_solutie(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...