Submission #1232367

#TimeUsernameProblemLanguageResultExecution timeMemory
1232367abdelhakimShortcut (IOI16_shortcut)C++20
0 / 100
2096 ms328 KiB
#include <bits/stdc++.h> #define ll long long #define dbg(x) cerr << #x << ' ' << x << endl; #define inf (ll) 1e17 using namespace std; vector<vector<pair<ll,ll>>> adj; long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c) { ll ans=inf; adj.resize(2*n); for (int i=1;i<n;i++) { adj[i].push_back({i-1,l[i-1]}); adj[i-1].push_back({i,l[i-1]}); } for (int i=0;i<n;i++) { if(d[i]) { adj[i+n].push_back({i,d[i]}); adj[i].push_back({i+n,d[i]}); } } for (int i=0;i<n-1;i++) { for (int j=i+1;j<n;j++) { vector<vector<pair<ll,ll>>> g=adj; if(j-i!=0) { g[i].push_back({j,c}); g[j].push_back({i,c}); } ll d=0; for (int i=0;i<2*n;i++) { vector<ll> dist(2*n,inf); dist[i]=0; priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>> pq; pq.push({0,i}); while(!pq.empty()) { ll node=pq.top().second; pq.pop(); for (auto &&e : g[node]) { if(dist[e.first] > dist[node]+e.second) { dist[e.first]=dist[node]+e.second; pq.push({dist[e.first],e.first}); } } } for (int i=0;i<2*n;i++) { if(dist[i]!=inf) { d=max(d,dist[i]); } } } ans=min(ans,d); } } return ans; }

Compilation message (stderr)

shortcut.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
shortcut_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...