Submission #926599

#TimeUsernameProblemLanguageResultExecution timeMemory
926599WarinchaiMuseum (CEOI17_museum)C++14
100 / 100
426 ms784976 KiB
#include<bits/stdc++.h> using namespace std; vector<pair<int,int>>adj[10005]; int n,k,x; int inf=1e9; int dp[2][10005][10005]; int sz[10005]; void dfs(int u,int p=-1){ //cerr<<u<<"\n"; sz[u]=1; for(auto x:adj[u])if(x.second!=p){ dfs(x.second,u); for(int i=sz[u];i>=0;i--){ for(int j=sz[x.second];j>=0;j--){ dp[0][u][i+j]=min(dp[0][u][i+j],dp[0][u][i]+dp[0][x.second][j]+x.first*2); dp[1][u][i+j]=min({dp[1][u][i+j],dp[0][u][i]+dp[1][x.second][j]+x.first,dp[1][u][i]+dp[0][x.second][j]+x.first*2}); } } sz[u]+=sz[x.second]; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>n>>k>>x; for(int i=1;i<=n-1;i++){ int a,b,c; cin>>a>>b>>c; adj[a].push_back({c,b}); adj[b].push_back({c,a}); } for(int i=0;i<=n;i++){ for(int j=2;j<=k;j++){ dp[0][i][j]=dp[1][i][j]=inf; } } //cerr<<"work\n"; dfs(x); cout<<dp[1][x][k]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...