Submission #1297811

#TimeUsernameProblemLanguageResultExecution timeMemory
1297811nathlol2Stations (IOI20_stations)C++20
16 / 100
399 ms572 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; void dfs(int u, int p, int c, int ml, vector<vector<int>> &g, vector<int> &labels){ labels[u] = ml + c++; for(auto v : g[u]){ if(v != p) dfs(v, u, c, ml, g, labels); } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<vector<int>> g(1000); for(int i = 0;i<n - 1;i++){ g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } std::vector<int> labels(n); bool f = 0; for(int i = 0;i<n;i++){ if(g[i].size() >= 3){ f = 1; labels[i] = 0; for(int j = 0;j<g[i].size();j++){ dfs(g[i][j], i, 1, 1000 * j, g, labels); } } } if(!f){ if(g[0].size() == 1){ labels[0] = 0; dfs(g[0][0], 0, 1, 0, g, labels); }else{ labels[0] = 0; dfs(g[0][0], 0, 1, 0, g, labels); dfs(g[0][1], 0, 1, 1000, g, labels); } } return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(t == 0){ return c[0]; } if(s == 0){ return c[t / 1000]; } int c1 = s / 1000, c2 = t / 1000; if(c1 == c2){ if(s < t){ return c[1]; }else{ return c[0]; } }else{ 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...