Submission #192443

#TimeUsernameProblemLanguageResultExecution timeMemory
192443kdh9949Crocodile's Underground City (IOI11_crocodile)C++17
100 / 100
801 ms61480 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; #define x first #define y second static const int N = 100000; int d[N][2], upd[N]; vector<pii> e[N]; priority_queue<pii, vector<pii>, greater<pii>> pq; int travel_plan(int n, int m, int R[][2], int L[], int k, int P[]) { for(int i = 0; i < m; i++){ e[R[i][0]].emplace_back(R[i][1], L[i]); e[R[i][1]].emplace_back(R[i][0], L[i]); } memset(d, 0x3f, sizeof(d)); for(int i = 0; i < k; i++){ d[P[i]][0] = d[P[i]][1] = 0; pq.emplace(0, P[i]); } while(!pq.empty()){ pii c = pq.top(); pq.pop(); if(c.x != d[c.y][1] || upd[c.y]) continue; upd[c.y] = 1; for(pii i : e[c.y]){ if(d[i.x][1] > c.x + i.y){ if(d[i.x][0] >= c.x + i.y){ d[i.x][1] = d[i.x][0]; d[i.x][0] = c.x + i.y; } else d[i.x][1] = c.x + i.y; pq.emplace(c.x + i.y, i.x); } } } return d[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...