Submission #1326680

#TimeUsernameProblemLanguageResultExecution timeMemory
1326680hanguyendanghuyMuseum (CEOI17_museum)C++20
20 / 100
3100 ms136572 KiB
#include <bits/stdc++.h> using namespace std; #define ll int #define pb push_back #define fi first #define se second #define all(x) x.begin(),x.end() const ll MAXN=5e5+5,MOD=1e9+7,INF=1e9,LG=16; ll i,n,m,j,k,p,dem,t,ans,sz[MAXN],st; vector<ll> dp[2][10005]; vector<pair<ll,ll>> adj[10005]; void dfs(ll u,ll pre){ sz[u]=1; for(auto x:adj[u]){ if(x.fi==pre) continue; dfs(x.fi,u); sz[u]+=sz[x.fi]; } } void solve(ll u,ll pre){ for(auto x:adj[u]){ if(x.fi==pre) continue; solve(x.fi,u); for(j=sz[u];j>=1;j--){ for(i=0;i<min(sz[x.fi],j);i++){ dp[0][u][j]=min(dp[0][u][j],dp[0][u][j-i-1]+dp[0][x.fi][i]+x.se*2); dp[1][u][j]=min(dp[1][u][j],min(dp[0][u][j-i-1]+dp[1][x.fi][i]+x.se,dp[1][u][j-i-1]+dp[0][x.fi][i]+x.se*2)); } } } } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); // freopen("BIRD.inp","r",stdin); // freopen("BIRD.out","w",stdout); cin>>n>>m>>st; for(i=1;i<n;i++){ ll u,v,c; cin>>u>>v>>c; adj[u].pb({v,c}); adj[v].pb({u,c}); } dfs(st,st); for(i=1;i<=n;i++){ dp[0][i].assign(sz[i]+3,0); dp[1][i].assign(sz[i]+3,0); for(j=1;j<sz[i];j++) dp[0][i][j]=dp[1][i][j]=INF; } solve(st,st); cout<<dp[1][st][m-1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...