Submission #172381

#TimeUsernameProblemLanguageResultExecution timeMemory
172381cgiosy경주 (Race) (IOI11_race)C++17
0 / 100
5 ms376 KiB
#include "race.h" #include <bits/stdc++.h> #define rep(i,x,n) for(int i=x; i<n; i++) using namespace std; constexpr int INF=0x3f3f3f3f; int best_path(int N, int K, int H[][2], int L[]) { int m=INF; vector<bool> V(N); vector<int> C(N, 1), D(K+1, INF), P(N, -1), X; vector<vector<pair<int, int>>> G(N); rep(i, 0, N-1) { int x=H[i][0], y=H[i][1], z=L[i]; G[x].push_back({y, z}); G[y].push_back({x, z}); } #define ITER(i) for(auto[j,w]:G[i]) if(j!=P[i] && !V[j]) function<void(int)> cnt=[&](int i) { ITER(i) P[j]=i, cnt(j), C[i]+=C[j]; }; function<int(int, int)> cent=[&](int i, int n) { ITER(i) if(C[j]>n/2) { P[i]=j; C[j]+=C[i]-=C[j]; return cent(j, n); } return i; }; function<void(int, int, int)> f=[&](int i, int d, int k) { X.push_back(d); m=min(m, k+D[K-d]); D[d]=min(D[d], k); ITER(i) if(d+w<=K && k+1<m) f(j, d+w, k+1); }; function<void(int, int)> cd=[&](int i, int p) { P[i=cent(i, C[i])]=p; V[i]=true; f(i, 0, 0); for(int x:X) D[x]=INF; for(auto[j,w]:G[i]) if(j!=P[i]) cd(j, i); }; cnt(0); cd(0, -1); return (m==INF?-1:m); }

Compilation message (stderr)

race.cpp: In lambda function:
race.cpp:17:30: warning: unused variable 'w' [-Wunused-variable]
  #define ITER(i) for(auto[j,w]:G[i]) if(j!=P[i] && !V[j])
                              ^
race.cpp:19:3: note: in expansion of macro 'ITER'
   ITER(i) P[j]=i, cnt(j), C[i]+=C[j];
   ^~~~
race.cpp: In lambda function:
race.cpp:17:30: warning: unused variable 'w' [-Wunused-variable]
  #define ITER(i) for(auto[j,w]:G[i]) if(j!=P[i] && !V[j])
                              ^
race.cpp:22:3: note: in expansion of macro 'ITER'
   ITER(i) if(C[j]>n/2) {
   ^~~~
race.cpp: In lambda function:
race.cpp:41:15: warning: unused variable 'w' [-Wunused-variable]
   for(auto[j,w]:G[i]) if(j!=P[i]) cd(j, i);
               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...