Submission #306860

#TimeUsernameProblemLanguageResultExecution timeMemory
306860VEGAnnStations (IOI20_stations)C++14
0 / 100
923 ms1024 KiB
#include "stations.h" #include <bits/stdc++.h> #define PB push_back #define sz(x) ((int)x.size()) #define all(x) x.begin(),x.end() using namespace std; vector<int> g[1000]; int tin[1000], tout[1000], tt = 0, ht[1000]; void dfs(int v, int p, bool tp){ tin[v] = tt++; ht[v] = tp; for (int u : g[v]){ if (u == p) continue; dfs(u, v, tp ^ 1); } tout[v] = tt++; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { for (int i = 0; i < n; i++) g[i].clear(); tt = 0; for (int i = 0; i < sz(u); i++){ g[u[i]].PB(v[i]); g[v[i]].PB(u[i]); } dfs(0, -1, 0); vector<int> labels; labels.resize(n); for (int i = 0; i < n; i++) { if (ht[i] == 0) labels[i] = tin[i]; else labels[i] = tout[i] + 2000; } return labels; } int find_next_station(int s, int t, std::vector<int> c) { int N = 2000; int ss = s; if (s >= N) ss -= N; int tt = t; if (t >= N) tt -= N; if (s < N){ if (ss > tt) return c.back(); int siz = sz(c); int anc = c.back() - N; if (s > 0) anc = c[siz - 2] - N; if (tt <= anc){ for (int v : c) if (tt <= v - N) return v; } else return c.back(); } else { if (ss < tt) return c[0]; if (tt >= c[1]){ reverse(all(c)); for (int v : c) if (tt >= v) return v; } else return c[0]; } }

Compilation message (stderr)

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