Submission #432472

#TimeUsernameProblemLanguageResultExecution timeMemory
432472milleniumEeeeStations (IOI20_stations)C++17
5 / 100
914 ms648 KiB
#ifndef EVAL #include "stub.cpp" #endif #include "stations.h" #include <bits/stdc++.h> #define fr first #define sc second #define pii pair<int, int> #define pb push_back #define szof(s) (int)s.size() #define all(s) s.begin(), s.end() using namespace std; const int MAXN = 1005; vector <int> g[MAXN]; int cnt[MAXN]; void clean() { for (int i = 0; i < MAXN; i++) { cnt[i] = 0; } for (int i = 0; i < MAXN; i++) { g[i].clear(); } } void dfs(int v, int par, vector <int> &order) { order.pb(v); for (int to : g[v]) { if (to != par) { dfs(to, v, order); } } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { clean(); // на всякий случай for (int i = 0; i <= n - 2; i++) { int x = u[i]; int y = v[i]; g[x].pb(y); g[y].pb(x); cnt[x]++; cnt[y]++; } int root = 0; bool flag = 0; for (int i = 0; i < n; i++) { if (cnt[i] >= 3) { root = i; flag = 1; } } vector <int> labels(n); if (flag) { labels[root] = 0; int sub = 1; for (int son : g[root]) { vector <int> order; dfs(son, root, order); int id = sub * 1000; for (int el : order) { labels[el] = id++; } sub++; } } else { // просто бамбук int up = -1; for (int i = 0; i < n; i++) { if (cnt[i] == 1) { up = i; break; } } vector <int> order; dfs(up, -1, order); int id = 0; for (int el : order) { labels[el] = id++; } } return labels; } int find_next_station(int s, int t, vector<int> c) { if (s / 1000 == t / 1000) { if (s < t) { return s + 1; } else { return s - 1; } } else { if (s % 1000 == 0) { return 0; } else { return s - 1; } } }
#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...