Submission #1149545

#TimeUsernameProblemLanguageResultExecution timeMemory
1149545FaresSTHStations (IOI20_stations)C++20
0 / 100
2 ms556 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; const ll mod = 1e9 + 7, inf = 9e18; #define all(x) x.begin(), x.end() #define len(x) ll(x.size()) #define mp make_pair #define S second #define F first int dt[1000], ft[1000], lvl[1000], td, tf; vector<int> adj[1000]; void dfs(int i, int d) { lvl[i] = d; dt[i] = td++; for (int j : adj[i]) { if (lvl[j]) continue; dfs(j, d + 1); } ft[i] = tf++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for (int i = 0; i < n - 1; i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0, 1); vector<int> res; for (int i = 0; i < n; i++) { if (lvl[i] & 1) res.push_back(dt[i]); else res.push_back(ft[i]); adj[i].clear(); lvl[i] = 0; dt[i] = 0; ft[i] = 0; } td = 0; tf = 0; return res; } int find_next_station(int s, int t, vector<int> c) { if (s > c[0]) { for (int i = 1; i < len(c) - 1; i++) { if (c[i] <= t && t < c[i + 1]) return c[i]; } if (c.back() <= t && t < c[0]) return c.back(); return c[0]; } else { for (int i = 1; i < len(c) - 1; i++) { if (c[i - 1] < t && t <= c[i]) return c[i]; } if (c[0] < t && t < c.back()) return c[0]; return c.back(); } }
#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...