Submission #1035477

#TimeUsernameProblemLanguageResultExecution timeMemory
1035477Mr_Husanboy기지국 (IOI20_stations)C++17
16 / 100
615 ms940 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(a) (a).begin(), (a).end() #define ff first #define ss second template<typename T> int len(T &a){return a.size();} mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<vector<int>> g(n); for(int i = 0; i < n - 1;i ++){ g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } int st = 0; int mx = 0; for(int i = 0; i < n; i ++) if(len(g[i]) > mx) mx = len(g[i]), st = i; int block = 1000; vector<int> res(n); auto dfs = [&](auto &dfs, int id, int i, int p = -1)->void{ res[i] = id; for(auto u : g[i]){ if(u == p) continue; if(p == -1){ dfs(dfs, id + 1, u, i); id += block; }else{ dfs(dfs, id + 1, u, i); } } }; dfs(dfs, 0, st); //for(auto u : res) cout << u << ' '; //cout << endl; return res; } int find_next_station(int s, int t, vector<int> c) { if(len(c) == 1){ return c[0]; } if(s == 0){ return c[t / 1000]; } if(s / 1000 != t / 1000 || t < s){ return c[0]; } return c[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...