Submission #258475

#TimeUsernameProblemLanguageResultExecution timeMemory
258475monus1042Crocodile's Underground City (IOI11_crocodile)C++17
0 / 100
3 ms4224 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vi; typedef long long ll; typedef pair<int,int> ii; typedef vector<ii> vii; typedef vector<ll> vll; #define pb push_back #define mkp make_pair #define all(X) X.begin(), X.end() const int MAXS = 100002; const ll inf = 1e15; vector< pair<int, ll> > g[MAXS]; priority_queue < pair<ll, int>, vector< pair<ll, int> >, greater< pair<ll,int> > > pq; vll d(MAXS, inf), d2(MAXS, inf); int state[MAXS]; // 0 unvisited, 1 minimal obtained void dj(){ while(!pq.empty()){ int auxu = pq.top().second; ll w = pq.top().first; pq.pop(); //if (state[auxu]) continue; //state[auxu] = 1; if (state[auxu]){ d[auxu] = w; for (int i=0; i<(int)g[auxu].size(); i++){ int v = g[auxu][i].first; ll wuv = g[auxu][i].second + w; if (wuv <= d[v]){ //d2[v] = min(d[v], d2[v]); d[v] = wuv; pq.push(mkp(wuv, v)); } } state[auxu]=2; }else if (state[auxu] == 0) state[auxu] = 1; } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ for (int i=0; i<M; i++){ g[ R[i][0] ].pb(mkp( R[i][1] , L[i])); g[ R[i][1] ].pb(mkp( R[i][0] , L[i])); } for (int i=0; i<K; i++){ pq.push(mkp(0, P[i])); d[P[i]] = d2[P[i]] = 0; state[P[i]] = 1; } dj(); return (int)d2[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...