제출 #1230225

#제출 시각아이디문제언어결과실행 시간메모리
1230225kaltspielerhy기지국 (IOI20_stations)C++20
100 / 100
305 ms576 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; int compteur = 0; vector<vector<int>> graphe; void dfs(int noeud, int profondeur, vector<int>& labels) { if (profondeur%2 == 0) { labels[noeud] = compteur; compteur++; } else { labels[noeud] = compteur; } for (int iVoisin : graphe[noeud]) { if (labels[iVoisin] == -1) dfs(iVoisin, profondeur+1, labels); } if (profondeur%2 == 1) { labels[noeud] = compteur; compteur++; } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n, -1); graphe.assign(n, {}); for (int i = 0; i < n-1; i++) { graphe[u[i]].push_back(v[i]); graphe[v[i]].push_back(u[i]); } dfs(0, 0, labels); compteur = 0; graphe.clear(); return labels; } int find_next_station(int s, int t, vector<int> c) { if (c.size() == 1) return c[0]; int in, out; if (c[0] > s) { sort(c.rbegin(), c.rend()); in = s; if (s == 0) out = c[0]; else out = c[1]; } else { sort(c.begin(), c.end()); in = c[1]; out = s; } if (t < in || t > out) { return c[0]; } int idx = 0; if (c[0] > s) { while (idx < c.size() && t <= c[idx]) idx++; return c[idx-1]; } while (idx < c.size() && t >= c[idx]) idx++; return c[idx-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...