Submission #547944

#TimeUsernameProblemLanguageResultExecution timeMemory
547944ZuZKhoRace (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #include "race.h" using namespace std; const int MAXN = 200005; vector<pair<int,int> > g[MAXN]; vector<char> used(MAXN,0); vector<int> sz(MAXN,0); vector<pair<int,int> > cur(MAXN); int Ans = 1e9; int n,k; void dfs_sizes(int v,int p) { sz[v] = 1; for(int i=0;i<g[v].size();i++) { int to = g[v][i].first; if (to==p || used[to]) continue; dfs_sizes(to,v); sz[v]+=sz[to]; } } int centroid(int v,int p,int ss) { for(int i=0;i<g[v].size();i++) { int to = g[v][i].first; if (to==p || used[to]) continue; if (sz[to] > ss/2) return centroid(to,v,ss); } return v; } void dfs_func(int v,int p,pair<int,int> func) { if (func.first>k) return; cur[cursz++] = func; int len = func.first, cnt = func.second; for(int i=0;i<g[v].size();i++) { int to = g[v][i].first; if (to==p || used[to]) continue; if (len+g[v][i].second > k) return; dfs_func(to,v,{len+g[v][i].second,cnt+1}); } } const int MAXK = 1e6 + 10; vector<int> ans(MAXK,-1); vector<int> changed(MAXK); int cursz = 0; int chsz = 0; void solve(int v) { dfs_sizes(v,-1); int c = centroid(v,-1,sz[v]); used[c] = 1; ans[0] = 0; ch[chsz++] = 0; for(int i=0;i<g[c].size();i++) { int ch = g[c][i].first; cursz = 0; dfs_func(ch,c,{g[c][i].second,1}); for(int j=0;j<cursz;j++) { int len = cur[j].first, cnt = cur[j].second; if (ans[k-len]!=-1) Ans = min(Ans,ans[k-len] + cnt); } for(int j=0;j<cursz;j++) { int len = cur[j].first, cnt = cur[j].second; if (ans[len] == -1) { ans[len] = cnt; changed[chsz++] = len; } else ans[len] = min(ans[len],cnt); } } for(int i=0;i<chsz;i++) { ans[changed[i]] = -1; } chsz = 0; for(int i=0;i<g[c].size();i++) { if (!used[g[c][i].first]) solve(g[c][i].first); } } int best_path(int _n, int _k, int h[][2], int l[]) { n = _n; k = _k; for(int i=0;i<n-1;i++) { int u = h[i][0],v=h[i][1],len = l[i]; g[u].push_back({v,len}); g[v].push_back({u,len}); } solve(0); if (Ans==1e9) return -1; else return Ans; }

Compilation message (stderr)

race.cpp: In function 'void dfs_sizes(int, int)':
race.cpp:16:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for(int i=0;i<g[v].size();i++) {
      |                 ~^~~~~~~~~~~~
race.cpp: In function 'int centroid(int, int, int)':
race.cpp:25:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     for(int i=0;i<g[v].size();i++) {
      |                 ~^~~~~~~~~~~~
race.cpp: In function 'void dfs_func(int, int, std::pair<int, int>)':
race.cpp:35:9: error: 'cursz' was not declared in this scope; did you mean 'cur'?
   35 |     cur[cursz++] = func;
      |         ^~~~~
      |         cur
race.cpp:37:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     for(int i=0;i<g[v].size();i++) {
      |                 ~^~~~~~~~~~~~
race.cpp: In function 'void solve(int)':
race.cpp:58:5: error: 'ch' was not declared in this scope; did you mean 'c'?
   58 |     ch[chsz++] = 0;
      |     ^~
      |     c
race.cpp:59:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for(int i=0;i<g[c].size();i++) {
      |                 ~^~~~~~~~~~~~
race.cpp:81:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |     for(int i=0;i<g[c].size();i++) {
      |                 ~^~~~~~~~~~~~