Submission #1210247

#TimeUsernameProblemLanguageResultExecution timeMemory
1210247peraStations (IOI20_stations)C++20
10 / 100
307 ms592 KiB
#include <bits/stdc++.h> #include "stations.h" using namespace std; std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { std::vector<int> labels(n); vector<vector<int>> g(n); for(int i = 0;i < n - 1;i ++){ g[u[i]].emplace_back(v[i]); g[v[i]].emplace_back(u[i]); } int timer = 0; vector<int> in(n) , out(n); function<void(int , int)> dfs = [&](int u , int p){ in[u] = timer++; for(int v : g[u]){ if(v != p){ dfs(v , u); } } out[u] = timer; }; dfs(0 , 0); for(int i = 0;i < n;i ++){ labels[i] = 1000 * in[i] + out[i]; } return labels; } int find_next_station(int s, int t, std::vector<int> c) { auto f = [&](int l){ return pair<int , int>{l / 1000 , l % 1000}; }; int ans; auto [ni , nj] = f(s); auto [nx , ny] = f(t); int parent; for(int x : c){ auto [l , r] = f(x); if(l <= ni && nj <= r){ parent = x; break; } } if(ni <= nx && ny <= nj){ for(auto x : c){ auto [l , r] = f(x); if(l <= nx && ny <= r && x != parent){ return x; } } } return parent; }
#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...