Submission #1244750

#TimeUsernameProblemLanguageResultExecution timeMemory
1244750qwushaStations (IOI20_stations)C++20
30.19 / 100
307 ms592 KiB
#include "stations.h" #include <iostream> #include <bits/stdc++.h> #define fi first #define se second using namespace std; int inf = 1e9 + 7; vector<vector<int>> g; vector<int> tin, tout; int curt = 0; int K = 5000; void dfs(int v, int p = -1) { tin[v] = curt; curt++; for (auto u : g[v]) { if (u != p) { dfs(u, v); } } tout[v] = curt; } vector<int> label(int n, int k, vector<int> v, vector<int> u) { curt = 0; vector<int> res(n); g.assign(n, {}); tin.assign(n, -1); tout.assign(n, -1); for (int i = 0; i < n - 1; i++) { g[v[i]].push_back(u[i]); g[u[i]].push_back(v[i]); } dfs(0); for (int i = 0; i < n; i++) { res[i] = tin[i] * K + tout[i]; } return res; } bool is_anc(int a, int b) { int ai = a / K, ao = a % K, bi = b / K, bo = b % K; return (ai <= bi && bo <= ao); } int find_next_station(int s, int t, vector<int> c) { int p = -1; for (auto el : c) { if (is_anc(el, s)) { p = el; } if (is_anc(el, t) && p != el) { return el; } } return p; }
#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...