Submission #886689

#TimeUsernameProblemLanguageResultExecution timeMemory
886689fanwenAirplane (NOI23_airplane)C++17
100 / 100
272 ms21064 KiB
/* author : bo may can 5 */ #include <bits/stdc++.h> using namespace std; #define fi first #define se second #define ll long long #define file(name) \ if(fopen(name".inp", "r")) \ freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout); const int MAX = 2e5 + 5; int n, m, a[MAX], f[MAX], g[MAX]; vector <int> adj[MAX]; void dp(int s, int f[]) { fill(f + 1, f + n + 1, INT_MAX); priority_queue <pair <int, int>, vector <pair <int, int>>, greater <pair <int, int>>> q; q.emplace(f[s] = a[s], s); while(!q.empty()) { auto [du, u] = q.top(); q.pop(); if(f[u] != du) continue; for (auto v : adj[u]) if(f[v] > max(f[u] + 1, a[v])) { f[v] = max(f[u] + 1, a[v]); q.emplace(f[v], v); } } } void you_make_it(void) { cin >> n >> m; for (int i = 1; i <= n; ++i) cin >> a[i]; while(m--) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } dp(1, f), dp(n, g); int ans = INT_MAX; for (int i = 1; i <= n; ++i) ans = min(ans, max(f[i], g[i]) * 2); // for (int i = 1; i <= n; ++i) cout << f[i] << " \n"[i == n]; // for (int i = 1; i <= n; ++i) cout << g[i] << " \n"[i == n]; for (int u = 1; u <= n; ++u) { for (auto v : adj[u]) { ans = min(ans, max(f[u], g[v]) * 2 + 1); } } cout << ans; } signed main() { #ifdef LOCAL freopen("TASK.inp", "r", stdin); freopen("TASK.out", "w", stdout); #endif file("airplane"); auto start_time = chrono::steady_clock::now(); cin.tie(0), cout.tie(0) -> sync_with_stdio(0); you_make_it(); auto end_time = chrono::steady_clock::now(); cerr << "\nExecution time : " << chrono::duration_cast <chrono::milliseconds> (end_time - start_time).count() << "[ms]" << endl; return (0 ^ 0); } // Dream it. Wish it. Do it.

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:12:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |         freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:61:5: note: in expansion of macro 'file'
   61 |     file("airplane");
      |     ^~~~
Main.cpp:12:49: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |         freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout);
      |                                          ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:61:5: note: in expansion of macro 'file'
   61 |     file("airplane");
      |     ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...