Submission #1252188

#TimeUsernameProblemLanguageResultExecution timeMemory
1252188lambd47Crocodile's Underground City (IOI11_crocodile)C++20
0 / 100
0 ms324 KiB
#include<bits/stdc++.h> #include "crocodile.h" using namespace std; #define L(i,j,k) for(int i=(j);i<=(k);i++) #define sz(v) ((int)v.size()) #define all(v) (v).begin(),(v).end() #define ll long long int travel_plan(int n, int m, int R[][2], int len[], int ps, int P[]) { vector<vector<int>> adj(n); L(i,0,m-1){ auto [a,b]=R[i]; adj[a].push_back(i); adj[b].push_back(i); } const ll MOD=1e17; vector<pair<ll,ll>> dp(n,{MOD,MOD}); priority_queue<array<ll,3>,vector<array<ll,3>>,greater<array<ll,3>>> pq; L(i,0,ps-1){ dp[P[i]]={0,0}; pq.push({0,0,P[i]}); } while(!pq.empty()){ auto [a,b,v]=pq.top(); pq.pop(); if(make_pair(a,b)!=dp[v])continue; for(auto e: adj[v]){ int vai=R[e][0]^R[e][1]^v; ll w=len[e]; if(dp[vai].first>b+w){ dp[vai].second=dp[vai].first; dp[vai].first=b+w; pq.push({dp[vai].first,dp[vai].second,vai}); } else if(dp[vai].second>b+w){ dp[vai].second=b+w; pq.push({dp[vai].first,dp[vai].second,vai}); } } } return dp[0].second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...