제출 #1202249

#제출 시각아이디문제언어결과실행 시간메모리
1202249adiyer경주 (Race) (IOI11_race)C++20
100 / 100
466 ms58112 KiB
#pragma once #include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define len(s) (ll) s.size() #define pb push_back #define S second #define F first using namespace std; typedef int ll; const int MXN = 2e5 + 11; const long long inf = 1e18 + 11; ll n, m, res, lng; ll sz[MXN], mrk[MXN], d[MXN]; vector < pair < ll, ll > > g[MXN]; multiset < pair < long long, ll > > st; long long val; long long path[MXN]; void sizes(ll v, ll p){ sz[v] = 1; for(auto [u, w] : g[v]) if(u != p) d[u] = d[v] + 1, path[u] = path[v] + w, sizes(u, v), sz[v] += sz[u]; } void add(ll v, ll p, ll x){ for(auto [u, w] : g[v]) if(u != p && !mrk[u]) add(u, v, x); if(x) st.insert({path[v], d[v]}); else st.erase(st.find({path[v], d[v]})); } void calc(ll v, ll p, ll lca){ val = lng + 2 * path[lca] - path[v]; auto it = st.lower_bound({val, 0}); if(it != st.end() && (it -> F) == val) res = min(res, d[v] + (it -> S) - 2 * d[lca]); for(auto [u, w] : g[v]) if(u != p && !mrk[u]) calc(u, v, lca); } void small_to_large(ll v, ll p, bool keep){ ll big_child = -1; for(auto [u, w] : g[v]) if(u != p && (big_child == -1 || sz[u] > sz[big_child])) big_child = u; for(auto [u, w] : g[v]) if(u != p && u != big_child) small_to_large(u, v, 0); if(big_child != -1) small_to_large(big_child, v, 1), mrk[big_child] = 1; st.insert({path[v], d[v]}); for(auto [u, w] : g[v]) if(u != p && !mrk[u]) calc(u, v, v), add(u, v, 1); if(big_child != -1) mrk[big_child] = 0; val = lng + path[v]; auto it = st.lower_bound({val, 0}); if(it != st.end() && (it -> F) == val) res = min(res, (it -> S) - d[v]); if(!keep){ for(auto [u, w] : g[v]) if(u != p && !mrk[u]) add(u, v, 0); st.erase(st.find({path[v], d[v]})); } } int best_path(int N, int K, int H[][2], int L[]){ lng = K, res = MXN; for(ll i = 0; i < N - 1; i++) g[H[i][0]].pb({H[i][1], L[i]}), g[H[i][1]].pb({H[i][0], L[i]}); sizes(0, 0); small_to_large(0, 0, 0); if(res == MXN) res = -1; return res; }

컴파일 시 표준 에러 (stderr) 메시지

race.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...