제출 #1293887

#제출 시각아이디문제언어결과실행 시간메모리
1293887SonicML기지국 (IOI20_stations)C++20
0 / 100
2089 ms2162688 KiB
#include "stations.h" #include <vector> #include <algorithm> #include <map> using namespace std; int const NMAX = 1000; vector <int> g[1 + NMAX]; int depth[1 + NMAX]; int ind = 0; int in[1 + NMAX]; int out[1 + NMAX]; void DFS(int node, int parent, vector <int> &labels) { if(depth[node] % 2 == 0) { ind++; labels[node-1] = ind-1; } for(int i = 0;i < g[node].size();i++) { int to = g[node][i]; if(to != parent) { depth[to] = depth[node]+1; DFS(to, node, labels); } } if(depth[node] % 2 == 1) { ind++; labels[node-1] = ind-1; } } void normalize(vector <int> &labels) { vector <int> aux; for(int i = 0;i < labels.size();i++) { aux.push_back(labels[i]); } sort(aux.begin(), aux.end()); aux.erase(unique(aux.begin(), aux.end()), aux.end()); map <int, int> valToPos; for(int i = 0;i < aux.size();i++) { valToPos[aux[i]] = i; } for(int i = 0;i < labels.size();i++) { labels[i] = valToPos[labels[i]]; } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n); for(int i = 1;i <= n-1;i++) { int a = u[i-1]+1, b = v[i-1]+1; g[a].push_back(b); g[b].push_back(a); } DFS(1, 1, labels); /* for(int i = 1;i <= n;i++) { if(depth[i] % 2 == 0) { labels[i-1] = in[i]; }else { labels[i-1] = out[i]; } } */ //normalize(labels); return labels; } int solve1(int s, int t, vector <int> &c) { int oldLim = s; for(int i = 0;i < c.size()-1;i++) { if(oldLim < t && t <= c[i]) { return c[i]; } oldLim = c[i]; } return c[c.size()-1]; } int solve2(int s, int t, vector <int> &c) { int oldLim = s; for(int i = c.size()-1;i > 0;i--) { if(c[i] <= t && t < oldLim) { return c[i]; } oldLim = c[i]; } return c[0]; } int find_next_station(int s, int t, vector<int> c) { if(s == 0) { // root / s - in / c - out return solve1(s, t, c); }else { // if(s < c[0]) { // s - in / c - out return solve1(s, t, c); } else { // s - in / c - out return solve2(s, t, c); } } }
#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...