Submission #1265328

#TimeUsernameProblemLanguageResultExecution timeMemory
1265328canhnam357악어의 지하 도시 (IOI11_crocodile)C++20
89 / 100
307 ms48896 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; 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]); } vector<vector<int>> dp(N, vector<int>(2, INT_MAX)); priority_queue<pair<int, int>> q; for (int i = 0; i < K; i++) { dp[P[i]][0] = dp[P[i]][1] = 0; q.emplace(0, P[i]); } while (!q.empty()) { auto [d, u] = q.top(); q.pop(); d = -d; if (d != dp[u][1]) continue; for (auto [v, w] : adj[u]) { int fi = dp[v][0], se = dp[v][1]; if (d + w < fi) { se = fi; fi = d + w; } else if (d + w < se) { se = d + w; } if (fi != dp[v][0] || se != dp[v][1]) { dp[v][0] = fi; dp[v][1] = se; q.emplace(-se, v); } } } return dp[0][1]; } // int main() { // int N, M, K; // cin >> N >> M >> K; // int R[M][2], L[M], P[K]; // for (int i = 0; i < M; i++) { // cin >> R[i][0] >> R[i][1] >> L[i]; // } // for (int i = 0; i < K; i++) cin >> P[i]; // cout << travel_plan(N, M, R, L, K, P); // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...