Submission #1007678

#TimeUsernameProblemLanguageResultExecution timeMemory
1007678UnforgettableplEscape Route (JOI21_escape_route)C++17
5 / 100
9083 ms112136 KiB
#include "escape_route.h" #include <bits/stdc++.h> using namespace std; #define int long long std::vector<long long> calculate_necessary_time( int32_t N, int32_t M, long long S, int32_t Q, std::vector<int32_t> A, std::vector<int32_t> B, std::vector<long long> L, std::vector<long long> C, std::vector<int32_t> U, std::vector<int32_t> V, std::vector<long long> T) { vector<vector<tuple<int,int,int>>> adj(N); for(int i=0;i<M;i++){ adj[A[i]].emplace_back(B[i],L[i],C[i]); adj[B[i]].emplace_back(A[i],L[i],C[i]); } vector<int> ans(Q); for(int i=0;i<Q;i++){ priority_queue<pair<int,int>> q; q.emplace(-T[i],U[i]); vector<int> visited(N,1e18); vector<bool> vis(N); visited[U[i]] = T[i]; while(!q.empty()){ auto [dist,idx] = q.top();q.pop();dist=-dist; if(vis[idx])continue; vis[idx]=true; if(idx==V[i]){ ans[i] = dist-T[i]; break; } for(auto[v,l,c]:adj[idx])if(!vis[v]){ int nxttime = 0; int currtime = dist%S; if(currtime<=c-l)nxttime=dist+l; else { nxttime = (dist/S)*S+l+S; } if(nxttime<visited[v]){ visited[v]=nxttime; q.emplace(-nxttime,v); } } } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...