제출 #1009855

#제출 시각아이디문제언어결과실행 시간메모리
1009855Mardonbekhazratov악어의 지하 도시 (IOI11_crocodile)C++17
46 / 100
2 ms604 KiB
#include "crocodile.h" #include<bits/stdc++.h> #define ll long long using namespace std; vector<bool>is,vis; vector<vector<pair<int,int>>>v; vector<priority_queue<int>>dp; const int INF=1e9; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ is.assign(N,false); vis.assign(N,false); for(int i=0;i<K;i++) is[P[i]]=true; v.resize(N); for(int i=0;i<M;i++){ v[R[i][0]].push_back({R[i][1],L[i]}); v[R[i][1]].push_back({R[i][0],L[i]}); } dp.resize(N); priority_queue<array<int,3>>q; for(int i=0;i<K;i++){ q.push({2,0,P[i]}); dp[P[i]].push(0); } while(!q.empty()){ auto [sz,d,x]=q.top(); q.pop(); if(-d<dp[x].top()) continue; if(vis[x]) continue; vis[x]=true; for(auto [z,w]:v[x]){ if(dp[z].size()<2){ dp[z].push(dp[x].top()+w); q.push({(int)dp[z].size(),-dp[z].top(),z}); } else if(dp[x].top()+w<dp[z].top()){ dp[z].pop(); dp[z].push(dp[x].top()+w); q.push({(int)dp[z].size(),-dp[z].top(),z}); } } } return dp[0].top(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...