Submission #696355

#TimeUsernameProblemLanguageResultExecution timeMemory
696355esomerStations (IOI20_stations)C++17
100 / 100
899 ms720 KiB
#include<bits/stdc++.h> using namespace std; #define endl "\n" typedef long long int ll; const int MOD = 1e9 + 7; vector<int> ans; int cnt; void DFS(int x, vector<vector<int>>& adj, int p, int d){ if(d%2 == 0) {ans[x] = cnt; cnt++;} for(int node : adj[x]){ if(node != p) DFS(node, adj, x, d + 1); } if(d%2 == 1){ans[x] = cnt; cnt++;} } vector<int> label(int n, int k, vector<int> u, vector<int> v){ vector<vector<int>> adj(n); cnt = 0; ans.resize(n); for(int i = 0; i < n - 1; i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } DFS(0, adj, -1, 0); return ans; } int find_next_station(int s, int t, vector<int> c){ bool st = 1; if(s > c[0]) st = 0; int n = (int)c.size(); int start = s; for(int i = 0; i < n; i++){ if(st == 0 && i == 0) continue; else if(st == 1 && i == n - 1) continue; if(st == 1){ if(t > start && t <= c[i]){ return c[i]; }else start = c[i]; }else{ if(i == n - 1){ if(t >= c[i] && t < s) return c[i]; }else{ if(t >= c[i] && t < c[i + 1]){ return c[i]; } } } } if(st == 0) return c[0]; else return c[n - 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...