제출 #1296383

#제출 시각아이디문제언어결과실행 시간메모리
1296383kawhiet기지국 (IOI20_stations)C++20
16 / 100
396 ms532 KiB
#include <bits/stdc++.h> #include "stations.h" using namespace std; vector<int> a; vector<vector<int>> g; void dfs(int u, int p) { a.push_back(u); for (auto v : g[u]) { if (v != p) { dfs(v, u); } } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { g.assign(n, {}); for (int i = 0; i < n - 1; i++) { g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } int r = -1, mx = 0; for (int i = 0; i < n; i++) { if (g[i].size() > mx) { mx = g[i].size(); r = i; } } vector<int> ret(n); ret[r] = 0; int cur = 1; for (auto u : g[r]) { int x = cur; int p = r; while (true) { ret[u] = x; x += g[r].size(); bool has = 0; for (auto v : g[u]) { if (v != p) { has = 1; p = u; u = v; break; } } if (!has) break; } cur++; } return ret; } int find_next_station(int s, int t, vector<int> c) { if (s == 0) { int r = c.size(); for (auto x : c) { if (t % r == x) { return x; } } } int r = 0; for (auto x : c) { if (x != 0) { r = abs(s - x); } } if (r == 0) return 0; if (s % r == t % r) { if (s < t) { return s + r; } else { return s - r; } } else { for (auto x : c) { if (x == s - r) { return x; } } return 0; } }
#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...