제출 #1148850

#제출 시각아이디문제언어결과실행 시간메모리
1148850FaresSTH기지국 (IOI20_stations)C++20
0 / 100
298 ms548 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; const ll mod = 1e9 + 7, inf = 9e18; #define all(x) x.begin(), x.end() #define len(x) ll(x.size()) #define mp make_pair #define S second #define F first vector<int> adj[1000]; int ft[1000], t; void dfs(int i) { ft[i] = 1; for (int j : adj[i]) { if (ft[j]) continue; dfs(j); } ft[i] = ++t; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for (int i = 0; i < n - 1; i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0); vector<int> res; for (int i = 0; i < n; i++) { res.push_back(ft[i] - 1); adj[i].clear(); ft[i] = 0; } t = 0; return res; } int find_next_station(int s, int t, vector<int> ft) { int sum = 0; vector<int> dt(len(ft)); for (int i = 1; i < len(ft) - 1; i++) { dt[i] = ft[i] - ft[i - 1]; sum += ft[i] - dt[i] + 1; } dt[0] = ft[0] - (ft[0] - (ft.back() - sum)) + 1; int res = ft.back(); for (int i = 0; i < len(ft) - 1; i++) { if (dt[i] <= t && t <= ft[i]) res = ft[i]; } return res; }
#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...