Submission #1076632

#TimeUsernameProblemLanguageResultExecution timeMemory
1076632rayan_bdRace (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ll long long const int mxN = 2e5+10; const ll INF = (int)1e9; vector<pair<ll,ll>> adj[mxN]; ll sz[mxN],mnDist[(int)1e7],N,K,ans=INF; bool ok[mxN]; void dfs1(ll node,ll par){ sz[node]=0; for(auto it:adj[node]){ if(it.first==par) continue; dfs1(it.first,node); sz[node]+=sz[it.first]; } sz[node]++; } ll find(ll node,ll par){ for(auto it:adj[node]){ if(it.first==par) continue; if(sz[it.first]>=((N+1)/2)){ return find(it.first,node); } } return node; } void dfs2(ll src,ll par,ll dist,ll h,bool f){ if(dist>K) return; if(f){ mnDist[dist]=min(mnDist[dist],h); }else{ ans=min(ans,mnDist[K-dist]+h); } for(auto it:adj[src]){ if(!ok[it.first]&&it.first!=par){ dfs2(it.first,src,dist+it.second,h+1,f); } } } void res(ll u,ll p,ll dist){ if(dist>K) return; mnDist[dist]=INF; for(auto it:adj[u]){ if(it.first!=p&&!ok[it.first]){ res(it.first,u,dist+it.second); } } } void decompose(ll u){ dfs1(u,-1); ll cen=find(u,-1); mnDist[0]=0; for(auto it:adj[u]){ if(!ok[it.first]){ dfs2(it.first,u,it.second,1,0); dfs2(it.first,u,it.second,1,1); } } res(u,-1,0); ok[u]=1; for(auto it:adj[u]){ if(!ok[it.first]){ decompose(it.first); } } } int best_path(int n,int k,int h[][2],int l[]){ memset(mnDist,0x3f,sizeof(mnDist)); for(ll i=0;i<n-1;++i){ adj[h[i][0]].pb({h[i][1],l[i]}); adj[h[i][1]].pb({h[i][0],l[i]}); } N=n,K=k; decompose(0); return ans==INF?-1:ans; } int main(){ #ifndef ONLINE_JUDGE freopen("input.in","r",stdin); freopen("output.out","w",stdout); #endif ll n,k;cin>>n>>k; ll h[n-1][2],l[n-1]; for(ll i=0;i<n-1;++i){ cin>>h[i][0]>>h[i][1]; } for(ll i=0;i<n-1;++i){ cin>>l[i]; } cout<<best_path(n,k,h,l); return 0; }

Compilation message (stderr)

race.cpp: In function 'void decompose(long long int)':
race.cpp:61:8: warning: unused variable 'cen' [-Wunused-variable]
   61 |     ll cen=find(u,-1);
      |        ^~~
race.cpp: In function 'int main()':
race.cpp:104:25: error: cannot convert 'long long int (*)[2]' to 'int (*)[2]'
  104 |     cout<<best_path(n,k,h,l);
      |                         ^
      |                         |
      |                         long long int (*)[2]
race.cpp:78:31: note:   initializing argument 3 of 'int best_path(int, int, int (*)[2], int*)'
   78 | int best_path(int n,int k,int h[][2],int l[]){
      |                           ~~~~^~~~~~
race.cpp:91:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |     freopen("input.in","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
race.cpp:92:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   92 |     freopen("output.out","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~