Submission #258839

#TimeUsernameProblemLanguageResultExecution timeMemory
258839monus1042악어의 지하 도시 (IOI11_crocodile)C++17
100 / 100
801 ms93736 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] == 0 && w == d2[auxu]){ // ok state[auxu] = 1; 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]){ if (d[v] < d2[v]){ // process it d2[v] = d[v]; pq.push(mkp(d2[v], v)); } d[v] = wuv; pq.push(mkp(wuv, v)); }else{ if (wuv < d2[v]){ d2[v] = wuv; pq.push(mkp(wuv, v)); } } } }//else ignore it } } 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...