Submission #575514

#TimeUsernameProblemLanguageResultExecution timeMemory
575514EliasShortcut (IOI16_shortcut)C++17
0 / 100
2074 ms300 KiB
#include <bits/stdc++.h> #ifndef _DEBUG #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") #include "shortcut.h" #endif using namespace std; #define int long long vector<vector<pair<int, int>>> adj; vector<int> dijkstra(int s) { vector<int> dist(adj.size(), -1); priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; pq.push({0, s}); while (!pq.empty()) { auto [d, i] = pq.top(); pq.pop(); if (dist[i] != -1) continue; dist[i] = d; for (auto [c, p] : adj[i]) { if (dist[c] == -1) pq.push({d + p, c}); } } return dist; } long long dia() { int longest = 0; for (int i = 0; i < adj.size(); i++) { vector<int> dists; dists = dijkstra(i); longest = max(longest, *max_element(dists.begin(), dists.end())); } return longest; } long long find_shortcut(signed n, vector<signed> l, vector<signed> d, signed c) { adj = vector<vector<pair<int, int>>>(2 * n); for (int i = 0; i < n - 1; i++) { adj[i].push_back({i + 1, l[i]}); adj[i + 1].push_back({i, l[i]}); } for (int i = 0; i < n; i++) { adj[i].push_back({i + n, d[i]}); adj[i + n].push_back({i, d[i]}); } long long best = dia(); for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) { adj[i].push_back({j, c}); adj[j].push_back({i, c}); best = min(best, dia()); adj[i].pop_back(); adj[j].pop_back(); } return best; }

Compilation message (stderr)

shortcut.cpp: In function 'long long int dia()':
shortcut.cpp:44:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     for (int i = 0; i < adj.size(); i++)
      |                     ~~^~~~~~~~~~~~
#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...