Submission #244480

#TimeUsernameProblemLanguageResultExecution timeMemory
244480kshitij_sodaniMuseum (CEOI17_museum)C++17
20 / 100
3117 ms784272 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second //#define endl '\n' int n,k,x; vector<pair<int,int>> adj[10001]; int dp[10001][10001][2]; //0-return //1-don't return int ss[1001]; int min2(int aa,int bb){ if(aa==-1){ return bb; } return min(aa,bb); } void dfs(int no,int par=-1){ ss[no]=1; for(auto j:adj[no]){ if(j.a==par){ continue; } dfs(j.a,no); ss[no]+=ss[j.a]; } int cur=0; dp[no][1][1]=0; dp[no][1][0]=0; for(auto j:adj[no]){ if(j.a==par){ continue; } cur+=ss[j.a]; for(int i=cur+1;i>=2;i--){ for(int kk=1;kk<=min(i-1,ss[j.a]);kk++){ if(dp[no][i-kk][0]>-1){ dp[no][i][0]=min2(dp[no][i][0],dp[no][i-kk][0]+dp[j.a][kk][0]+2*j.b); dp[no][i][1]=min2(dp[no][i][1],dp[no][i-kk][0]+dp[j.a][kk][1]+j.b); } if(dp[no][i-kk][1]>-1){ dp[no][i][1]=min2(dp[no][i][1],dp[no][i-kk][1]+dp[j.a][kk][0]+2*j.b); } } } } /*cout<<no<<endl; for(int j=1;j<=ss[no];j++){ cout<<dp[no][j][0]<<","; } cout<<endl; for(int j=1;j<=ss[no];j++){ cout<<dp[no][j][1]<<","; } cout<<endl; */ } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>k>>x; x--; for(int i=0;i<n-1;i++){ int aa,bb,cc; cin>>aa>>bb>>cc; aa--; bb--; adj[aa].pb({bb,cc}); adj[bb].pb({aa,cc}); } for(int i=0;i<n;i++){ for(int j=1;j<=n;j++){ dp[i][j][0]=-1; dp[i][j][1]=-1; } } dfs(x); cout<<min(dp[x][k][1],dp[x][k][0])<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...