Submission #942393

#TimeUsernameProblemLanguageResultExecution timeMemory
942393vjudge1Alias (COCI21_alias)C++17
70 / 70
7 ms5724 KiB
#include "bits/stdc++.h" using namespace std; struct Nodo{ long long Lugar, Tiempo; }; vector< vector<Nodo> > Grafo; long long n, m; vector<long long> Dijkstra(long long Inicio){ vector<long long> Distancia(n, 2222222222222222); Distancia[Inicio] = 0; set< pair<long long, long long> > Cola; Cola.insert(make_pair(0, Inicio)); while(!Cola.empty()){ pair<long long, long long> Actual = (*Cola.begin()); Cola.erase((*Cola.begin())); for(auto E: Grafo[Actual.second]){ if(Distancia[Actual.second] + E.Tiempo < Distancia[E.Lugar]){ Distancia[E.Lugar] = Distancia[Actual.second] + E.Tiempo; Cola.insert(make_pair(E.Tiempo, E.Lugar)); } } } return Distancia; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; set<string> s; vector<string> a(m); vector<string> b(m); vector<long long> c(m); for(long long i = 0; i < m; i++){ cin>>a[i]>>b[i]>>c[i]; s.insert(a[i]); s.insert(b[i]); } map<string, long long> Numerizar; long long i = 0; for(auto E: s){ Numerizar[E] = i; i++; } Grafo.assign(n, vector<Nodo>()); for(long long i = 0; i < m; i++){ Nodo Arista; Arista.Lugar = Numerizar[b[i]]; Arista.Tiempo = c[i]; Grafo[Numerizar[a[i]]].push_back(Arista); } vector< vector<long long> > Distancias(n); vector<bool> Hechos(n, 0); long long q; cin>>q; while(q--){ string Palabra, Objetivo; cin>>Palabra>>Objetivo; long long Revisar = Numerizar[Palabra]; long long Buscar = Numerizar[Objetivo]; if(Hechos[Revisar]){ if(Distancias[Revisar][Buscar] == 2222222222222222) cout<<"Roger\n"; else cout<<Distancias[Revisar][Buscar]<<"\n"; } else { Distancias[Revisar] = Dijkstra(Revisar); Hechos[Revisar] = 1; if(Distancias[Revisar][Buscar] == 2222222222222222) cout<<"Roger\n"; else cout<<Distancias[Revisar][Buscar]<<"\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...