# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1147826 | FaresSTH | Stations (IOI20_stations) | C++20 | 0 ms | 0 KiB |
#include "bits/stdc++.h"
using namespace std;
#define int long long
#define mp make_pair
#define S second
#define F first
vector<int> adj[1000];
int dt[1000], t;
void dfs(int i) {
dt[i] = ++t;
for (int j : adj[i]) {
if (dt[j]) continue;
dfs(j);
}
}
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]);
}
int rt; for (int i = 0; i < n; i++) if (adj[i].size() == 1) rt = i;
dfs(rt); vector<int> res;
for (int i = 0; i < n; i++) {
res.push_back(dt[i] - 1);
adj[i].clear();
dt[i] = 0;
}
return res;
}
int find_next_station(int s, int t, vector<int> c) {
int res;
if (s < t) for (int i : c) if (i > s) res = i;
else for (int i : c) if (i < s) res = i;
return res;
}