Submission #788810

#TimeUsernameProblemLanguageResultExecution timeMemory
788810Ronin13Crocodile's Underground City (IOI11_crocodile)C++17
100 / 100
349 ms61016 KiB
#include "crocodile.h" #include <bits/stdc++.h> #define ll long long #define ull unsigned ll #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define pb push_back #define epb emplace_back using namespace std; int travel_plan(int n, int m, int R[][2], int L[], int k, int p[]) { vector <vector <pii> > g(n); priority_queue <pii> pq; for(int i = 0; i < m; i++){ int u = R[i][0]; int v = R[i][1]; int l = L[i]; g[v].pb({u, l}); g[u].pb({v, l}); } int d[n + 1][2]; for(int i = 0; i < n; i++) d[i][0] = d[i][1] = 1e9 + 1; for(int i = 0; i < k; i++){ pq.push({0, p[i]}); d[p[i]][0] = d[p[i]][1] = 0; } vector <bool> used(n + 1, false); while(!pq.empty()){ int v = pq.top().s; pq.pop(); if(used[v]) continue; used[v] = true; for(auto x : g[v]){ int to = x.f; int len = x.s; if(d[v][1] + len < d[to][1]){ d[to][1] = d[v][1] + len; if(d[to][0] > d[to][1]) swap(d[to][1], d[to][0]); if(d[to][1] != 1e9 + 1)pq.push({-d[to][1], to}); } } } return d[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...