Submission #1283547

#TimeUsernameProblemLanguageResultExecution timeMemory
1283547Faisal_SaqibCrocodile's Underground City (IOI11_crocodile)C++20
89 / 100
355 ms55056 KiB
#include "crocodile.h" // #include "grader.cpp" #include <bits/stdc++.h> using namespace std; #define ll long long const int QK=1e6+100,inf=1e9+7; int n,k; ll dist[QK],sp[QK]; ll dp[QK][5]; bool vis[QK]; vector<pair<int,int>> adj[QK]; void dykstra(){ for(int i=0;i<=n;i++) { dp[i][0]=inf; dp[i][1]=inf; dist[i]=inf; } priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>> pq; for(int j=0;j<k;j++){ dist[sp[j]]=0; dp[sp[j]][0]=dp[sp[j]][1]=0; pq.push({0,sp[j]}); } while(!pq.empty()){ auto [d,u]=pq.top();pq.pop(); if(d!=dp[u][1])continue; // not equal to second minimum for(auto [v,w]:adj[u]){ ll nd=dp[u][1]+w; if(nd<dp[v][0]) { dp[v][1]=dp[v][0]; // we have already push for (dp[v][0],v) (dp[v][1],v) dp[v][0]=nd; // pq.push({nd,v}); pq.push({dp[v][1],v}); // maybe already vis } else if(nd<dp[v][1]) { dp[v][1]=nd; pq.push({nd,v}); } } } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { n=N,k=K; for(int i=0;i<K;i++) sp[i]=P[i]; // sort(sp,sp+K); for(int i=0;i<M;i++){ int u=R[i][0],v=R[i][1],l=L[i]; adj[u].push_back({v,l}); adj[v].push_back({u,l}); } dykstra(); // calculate(); return dp[0][1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...