Submission #931163

#TimeUsernameProblemLanguageResultExecution timeMemory
931163PieArmyCrocodile's Underground City (IOI11_crocodile)C++17
100 / 100
494 ms113464 KiB
#include "crocodile.h" #include<bits/stdc++.h> typedef long long ll; #define pb push_back #define sp << " " << using namespace std; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ vector<ll>komsu[N],cos[N]; for(int i=0;i<M;i++){ komsu[R[i][0]].pb(R[i][1]); komsu[R[i][1]].pb(R[i][0]); cos[R[i][0]].pb(L[i]); cos[R[i][1]].pb(L[i]); } //using wtf = pair<ll,int>; priority_queue<pair<ll,int>/*,vector<wtf>,greater<wtf>*/>pq; int say[N];for(int i=0;i<N;i++)say[i]=0; for(int i=0;i<K;i++){ say[P[i]]=1; pq.push({0,P[i]}); } while(pq.size()){ ll sum=-pq.top().first; int pos=pq.top().second; //cout << sum sp pos << '\n'; pq.pop(); if(say[pos]==2)continue; say[pos]++; if(say[pos]==1)continue; if(!pos){ return sum; } for(int i=0;i<ll(komsu[pos].size());i++){ pq.push({-sum-cos[pos][i],komsu[pos][i]}); } } return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...