Submission #1213110

#TimeUsernameProblemLanguageResultExecution timeMemory
1213110kunzaZa183Crocodile's Underground City (IOI11_crocodile)C++20
100 / 100
1656 ms109124 KiB
#include "crocodile.h" #include <bits/stdc++.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<vector<pair<int, int>>> adj(N); for (int i = 0; i < M; i++) { adj[R[i][0]].emplace_back(R[i][1], L[i]); adj[R[i][1]].emplace_back(R[i][0], L[i]); } ll bign = 1e18; vector<pair<ll, ll>> stat(N, {bign, bign}); // value, curin priority_queue<pair<ll, int>> pqai3; for (int i = 0; i < K; i++) { stat[P[i]] = {0, 0}; for (auto a : adj[P[i]]) { pqai3.emplace(-a.second, a.first); } } while (!pqai3.empty()) { pair<ll, int> pii = pqai3.top(); pqai3.pop(); if (-pii.first >= stat[pii.second].second) continue; if (-pii.first >= stat[pii.second].first) stat[pii.second].second = -pii.first; else { stat[pii.second].second = stat[pii.second].first; stat[pii.second].first = -pii.first; } for (auto a : adj[pii.second]) pqai3.emplace(-(stat[pii.second].second + a.second), a.first); } // for (int i = 0; i < N; i++) { // cout << stat[i].first << " " << stat[i].second << "\n"; // } return stat[0].second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...