Submission #1213084

#TimeUsernameProblemLanguageResultExecution timeMemory
1213084thelegendary08Stations (IOI20_stations)C++17
52.32 / 100
309 ms580 KiB
#include "stations.h" #include<bits/stdc++.h> #define pb push_back #define mp make_pair #define vi vector<int> #define f0r(i,n) for(int i = 0; i<n; i++) #define FOR(i, k, n) for(int i = k; i<n; i++) #define dout(x) cout<<x<<' '<<#x<<'\n'; #define vout(x) for(auto u : x)cout<<u<<' '; cout<<'\n'; #define vb vector<bool> using namespace std; const int mxn = 1005; vector<vi>adj(mxn); vi sz(mxn); vi in(mxn); int timer = 0; int dfs(int node, int from){ in[node] = timer; timer++; int cur = 1; for(auto u : adj[node]){ if(u != from){ cur += dfs(u, node); } } sz[node] = cur; return cur; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { timer = 0; f0r(i,n){ adj[i].clear(); sz[i] = 0; in[i] = 0; } vi deg(n); f0r(i,n-1){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); deg[u[i]]++; deg[v[i]]++; } dfs(0, -1); //1000 * in +(sz - 1) std::vector<int> labels(n); for (int i = 0; i < n; i++) { labels[i] = 1000 * in[i] + sz[i] - 1; } return labels; } int find_next_station(int s, int t, std::vector<int> c) { // cout<<s<<' '<<t<<'\n'; int pr; for(auto u : c){ if(u / 1000 < s / 1000)pr = u; } // dout(pr); for(auto u : c){ if(u != pr){ int l = u / 1000; int r = u / 1000 + u % 1000; // cout<<l<<' '<<r<<'\n'; if(l <= t/1000 && t/1000 <= r)return u; } } return pr; }
#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...