Submission #1281370

#TimeUsernameProblemLanguageResultExecution timeMemory
1281370hynmjAirplane (NOI23_airplane)C++20
0 / 100
2 ms560 KiB
#include <bits/stdc++.h> #define int long long #define first first const int N = 2e5 + 7; using namespace std; vector<pair<int, int>> graph[N]; int a[N]; vector<int> dijkstra(int start, vector<int> &dist) { set<pair<int, int>> q; vector<int> vis(dist.size(), 0); q.insert({0, start}); dist[start] = 0; int node, weight; while (q.size()) { node = q.begin()->second; q.extract(*q.begin()); if (vis[node]) continue; vis[node] = 1; for (auto i : graph[node]) { if (dist[i.second] > dist[node] + 1 + max(dist[node] + 1, a[i.second]) - (dist[node] + 1)) { dist[i.second] = dist[node] + 1 + max(dist[node] + 1, a[i.second]) - (dist[node] + 1); q.insert({dist[i.second], i.second}); } } } return dist; } void solve() { int n, m; cin >> n >> m; // int s, t, l, k; // cin >> s >> t >> l >> k; int u, v, w; for (int i = 0; i < n; i++) { cin >> a[i + 1]; } for (int i = 0; i < m; i++) { cin >> u >> v; w = 1; graph[u].push_back({w, v}); graph[v].push_back({w, u}); } vector<int> dist1(n + 1, 1e18); vector<int> distn(n + 1, 1e18); dijkstra(1, dist1); dijkstra(n, distn); int ans = 1e18; for (int i = 1; i <= n; i++) { cout << dist1[i] << " "; } cout << endl; for (int i = 1; i <= n; i++) { cout << distn[i] << " "; } cout << endl; for (int i = 1; i < n; i++) { ans = min(ans, max(dist1[i], distn[i]) * 2); } for (int i = 0; i < n; i++) { for (auto j : graph[i]) { ans = min(ans, dist1[i] + 1 + distn[j.second]); } } cout << ans << endl; } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); cout << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...