Submission #1140255

#TimeUsernameProblemLanguageResultExecution timeMemory
1140255aguss악어의 지하 도시 (IOI11_crocodile)C++20
100 / 100
574 ms79792 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const ll INF = 1e18; vector<vector<pair<ll, ll>>> arr; vector<pair<ll, ll>> dis; vector<bool> vis; vector<ll> exits; void dijkstra(){ priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> q; for(ll &i : exits){ q.push({0, i}); dis[i] = {0, 0}; } while(!q.empty()){ int actnode = q.top().second; q.pop(); if(vis[actnode]){ continue; } vis[actnode] = 1; for(auto &[x, y] : arr[actnode]){ if(dis[actnode].second + y < dis[x].first){ if(dis[x].first < dis[x].second){ dis[x].second = dis[x].first; } dis[x].first = dis[actnode].second + y; } else if(dis[actnode].second + y < dis[x].second){ dis[x].second = dis[actnode].second + y; } if(dis[x].second != INF){ q.push({dis[x].second, x}); } } } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ arr.assign(N, vector<pair<ll, ll>>(0)); dis.assign(N, {INF, INF}); vis.assign(N, 0); for(int i = 0; i < M; i++){ arr[R[i][0]].push_back({R[i][1], L[i]}); arr[R[i][1]].push_back({R[i][0], L[i]}); } for(int i = 0; i < K; i++){ exits.push_back(P[i]); } dijkstra(); return dis[0].second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...