Submission #725316

#TimeUsernameProblemLanguageResultExecution timeMemory
725316onepunchac168Crocodile's Underground City (IOI11_crocodile)C++14
100 / 100
445 ms45596 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back typedef pair <int,int> ii; const char nl='\n'; ii dp[100005][2]; vector <int > gg; vector <ii> vt[100005]; int n; int dijkstra() { for (int i=0;i<n;i++) { dp[i][0]=dp[i][1]={1e9+5,-1}; } priority_queue<ii,vector <ii> ,greater <ii> > qu; for (auto v:gg) { dp[v][0]=dp[v][1]={0,-1}; qu.push({0,v}); } while (!qu.empty()) { int aa=qu.top().fi; int u=qu.top().se; qu.pop(); if (u==0) { return aa; } if (aa!=dp[u][1].fi){continue;} for (auto v:vt[u]) { if (dp[v.fi][0].fi>dp[u][1].fi+v.se) { if (dp[v.fi][1].fi>dp[v.fi][0].fi) { dp[v.fi][1]=dp[v.fi][0]; dp[v.fi][0]={dp[u][1].fi+v.se,u}; qu.push({dp[v.fi][1].fi,v.fi}); } else { dp[v.fi][0]={dp[u][1].fi+v.se,u}; } } else if (dp[v.fi][1].fi>dp[u][1].fi+v.se) { dp[v.fi][1]={dp[u][1].fi+v.se,u}; qu.push({dp[v.fi][1].fi,v.fi}); } } } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { n=N; for (int i=0;i<M;i++) { int aa=R[i][0]; int bb=R[i][1]; int cc=L[i]; vt[aa].pb({bb,cc}); vt[bb].pb({aa,cc}); } for (int i=0;i<K;i++) { gg.pb(P[i]); } return dijkstra(); }

Compilation message (stderr)

crocodile.cpp: In function 'int dijkstra()':
crocodile.cpp:20:51: warning: control reaches end of non-void function [-Wreturn-type]
   20 |     priority_queue<ii,vector <ii> ,greater <ii> > qu;
      |                                                   ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...