Submission #832828

#TimeUsernameProblemLanguageResultExecution timeMemory
832828jlallas384Crocodile's Underground City (IOI11_crocodile)C++17
89 / 100
377 ms49976 KiB
#include <bits/stdc++.h> #include "crocodile.h" using namespace std; using ll = long long; int travel_plan(int n, int m, int r[][2], int L[], int k, int p[]){ vector<int> lst(n); priority_queue<pair<ll,int>> pq; vector<vector<ll>> dist(n); for(int i = 0; i < k; i++){ pq.emplace(0, p[i]); lst[p[i]] = 1; dist[p[i]].push_back(0); dist[p[i]].push_back(0); } vector<vector<pair<int,int>>> g(n); for(int i = 0; i < m; i++){ g[r[i][0]].emplace_back(r[i][1], L[i]); g[r[i][1]].emplace_back(r[i][0], L[i]); } while(pq.size()){ auto [d, v] = pq.top(); pq.pop(); if(-d > dist[v].back()) continue; if(v == 0) return -d; for(auto [u, w]: g[v]) if(!lst[u]){ if(dist[u].empty()){ dist[u].push_back(-d + w); }else if(dist[u].size() == 1){ dist[u].push_back(-d + w); sort(dist[u].begin(), dist[u].end()); pq.emplace(-dist[u][1], u); }else{ if(-d + w < dist[u][1]){ dist[u].push_back(-d + w); sort(dist[u].begin(), dist[u].end()); dist[u].pop_back(); pq.emplace(-dist[u][1], u); } } } } assert(false); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...