Submission #959067

#TimeUsernameProblemLanguageResultExecution timeMemory
959067The_SamuraiStations (IOI20_stations)C++17
73.36 / 100
575 ms1504 KiB
#include "stations.h" #include "bits/stdc++.h" using namespace std; std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<vector<int>> adj(n); vector<bool> vis(n); for (int i = 0; i < n - 1; i++) { adj[u[i]].emplace_back(v[i]); adj[v[i]].emplace_back(u[i]); } int z = 0; vector<int> h(n), tin(n), tout(n), ans(n); auto dfs = [&](auto &dfs, int u) -> void { tin[u] = z++; vis[u] = true; for (int v: adj[u]) { if (vis[v]) continue; h[v] = h[u] + 1; dfs(dfs, v); } tout[u] = z++; }; dfs(dfs, 0); for (int i = 0; i < n; i++) ans[i] = h[i] % 2 ? tout[i] * 2 + 1 : tin[i] * 2; // for (int i = 0; i < n; i++) cout << ans[i] << ' '; // cout << endl; return ans; } int find_next_station(int s, int t, std::vector<int> c) { sort(c.begin(), c.end()); // cout << '\t' << s << ' ' << t << endl; // cout << '\t'; // for (int u: c) cout << u << ' '; // cout << endl; if (s % 2 == 0) { for (int u: c) { if (s <= t and t <= u) return u; } return c.back(); } else { reverse(c.begin(), c.end()); for (int u: c) { if (u == c.back()) return u; if (u <= t and t <= s) return u; } } }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:50:1: warning: control reaches end of non-void function [-Wreturn-type]
   50 | }
      | ^
#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...