Submission #1244692

#TimeUsernameProblemLanguageResultExecution timeMemory
1244692qwushaStations (IOI20_stations)C++20
10 / 100
314 ms600 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> par; vector<int> tin, tout; int curt = 0; int K = 2000; void dfs(int v, int p = -1) { tin[v] = curt; curt++; par[v] = p; 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) { vector<int> res(n); g.assign(n, {}); par.assign(n , -1); 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; } int find_next_station(int s, int t, vector<int> c) { int si = s / K, so = s % K; int ti = t / K, to = t % K; int p = -1; for (auto el : c) { int eli = el / K, elo = el % K; if (eli <= si && so <= elo) { p = el; } if (eli <= ti && to <= elo && 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...