Submission #1241283

#TimeUsernameProblemLanguageResultExecution timeMemory
1241283muhammad-ahmadStations (IOI20_stations)C++20
100 / 100
309 ms580 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; int dist[1001], par[1001], l; vector<int> adj[1001], labels(1001); void dfs(int u = 1){ if (dist[u] % 2 == 0){ labels[u] = l++; } for (auto i : adj[u]){ if (i != par[u]){ dist[i] = dist[u] + 1; par[i] = u; dfs(i); } } if (dist[u] % 2) labels[u] = l++; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { for (int i = 1; i <= n; i++) adj[i].clear(); for (int i = 1; i <= n; i++) {dist[i] = 0, par[i] = 0;}; for (int i = 0; i < n - 1; i++){ adj[u[i] + 1].push_back(v[i] + 1); adj[v[i] + 1].push_back(u[i] + 1); } l = 0; dfs(); vector<int> ans; for (int i = 1; i <= n; i++){ ans.push_back(labels[i]); } return ans; } int find_next_station(int s, int t, std::vector<int> c) { int n = c.size(); if (s > c.back()){ for (int i = 1; i < n - 1; i++){ if (t >= c[i] and t < c[i + 1]) return c[i]; } if (t >= c[n - 1] and t < s) return c[n - 1]; else return c[0]; } else { if (t >= s and t <= c[0]) return c[0]; for (int i = 1; i < n - 1; i++){ if (t > c[i - 1] and t <= c[i]) return c[i]; } 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...