제출 #429307

#제출 시각아이디문제언어결과실행 시간메모리
429307AugustinasJucas기지국 (IOI20_stations)C++14
100 / 100
1257 ms896 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int dydis = 1000; vector<int> gr[dydis]; int enter[dydis]; int leave[dydis]; vector<int> ret (dydis); int dbInd = 0; void dfs(int v, int came, int h = 0){ enter[v] = dbInd++; for(auto x : gr[v]){ if(x == came) continue; dfs(x, v, h+1); } leave[v] = dbInd++; //cout << "enter[" << v << "] = " << enter[v] << ", leave[" << v << "] = " << leave[v] << ", "; if(h & 1){ //cout << "dedu leave" << endl; ret[v] = leave[v]; }else{ ret[v] = enter[v]; //cout << "dedu enter" << endl; } } vector<int> compress(vector<int> a){ vector<int> ret; auto cp = a; sort(cp.begin(), cp.end()); for(auto x : a){ ret.push_back(lower_bound(cp.begin(), cp.end(), x) - cp.begin()); } //cout << "{"; for(auto x : a) cout << x << " "; cout << "} -> {"; for(auto x : ret) cout << x << " "; cout << "}\n\n"; return ret; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for(int i = 0; i < n; i++){ gr[i].clear(); } dbInd = 0; ret.resize(n); for(int i = 0; i < n-1; i++){ gr[u[i]].push_back(v[i]); gr[v[i]].push_back(u[i]); } dfs(0, -1); ret = compress(ret); return ret; } int find_next_station(int s, int t, vector<int> c) { bool yraMaz = 1; for(auto x : c){ if(x < s) yraMaz = 0; } if(yraMaz){ int dd = c.back(); int last = s+1; //cout << s << " yra enter" << endl; for(auto x : c){ if(x == dd && s != 0) continue; int enter = last; int leave = x; //cout << "gaunu [" << enter << "; " << leave << "]\n"; if(enter <= t && t <= leave) return x; last = leave; } return c.back(); }else{ //cout << s << " yra leave" << endl; for(int i = 1; i < (int)c.size(); i++){ int enter = c[i]; int leave = (i == (int)c.size() - 1 ? s : c[i+1] ) - 1; //cout << c[i] << ", enter: " << enter << ", leave: " << leave << endl; if(enter <= t && t <= leave){ return c[i]; } } return c[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...