제출 #1209211

#제출 시각아이디문제언어결과실행 시간메모리
1209211pera악어의 지하 도시 (IOI11_crocodile)C++20
0 / 100
0 ms320 KiB
#include<bits/stdc++.h> #include "crocodile.h" using namespace std; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ vector<vector<pair<int , long long>>> g(N); for(int i = 0;i < M;i ++){ g[R[i][0]].emplace_back(R[i][1] , L[i]); g[R[i][1]].emplace_back(R[i][0] , L[i]); } vector<vector<long long>> dist(N , vector<long long>(2 , -1)); priority_queue<pair<long long , int> , vector<pair<long long , int>> , greater<pair<long long , int>>> pq; for(int i = 0;i < K;i ++){ for(int w = 0;w < 2;w ++){ dist[P[i]][w] = 0; } pq.push(pair<long long , int>{0LL , P[i]}); } while((int)pq.size()){ auto [d , u] = pq.top(); pq.pop(); if(dist[u][1] != d){ continue; } for(auto [v , w] : g[u]){ d += w; long long a = dist[v][1]; for(int q = 0;q < 2;q ++){ if(dist[v][q] == -1 || dist[v][q] > a){ if(q == 0){ swap(dist[v][0] , dist[v][1]); } dist[v][q] = a; break; } } if(dist[v][1] != a){ pq.push(pair<long long , int>{dist[v][1] , v}); } d -= w; } } return dist[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...