ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#149607 | #9. 小h的树 | Yuc | 100 | 388ms | 107196kb | C++11 | 1.2kb | 2022-07-21 18:53:53 | 2022-07-21 18:53:53 |
answer
#include<bits/stdc++.h>
const int N=3003,INF=0x3f3f3f3f;
int n,m,dp[N][N][3],siz[N],ans;
struct edge{int v,c;};
std::vector<edge>g[N];
void Dfs(int u,int fa,int c){
int v;
siz[u]=1;
for(int j=0;j<=n;j++)dp[u][j][0]=dp[u][j][1]=dp[u][j][2]=INF;
dp[u][1][0]=0;
for(int i=0;i<g[u].size();i++)
if((v=g[u][i].v)!=fa){
Dfs(v,u,g[u][i].c);
for(int j=siz[u]+siz[v];~j;j--)
for(int k=std::max(1,j-siz[u]);k<=siz[v]&&k<=j;k++){
dp[u][j][0]=std::min(dp[u][j][0],dp[u][j-k][0]+dp[v][k][0]);
dp[u][j][1]=std::min(dp[u][j][1],std::min(dp[u][j-k][1]+dp[v][k][0],dp[u][j-k][0]+dp[v][k][1]));
dp[u][j][2]=std::min(dp[u][j][2],std::min(dp[u][j-k][1]+dp[v][k][1],std::min(dp[u][j-k][0]+dp[v][k][2],dp[u][j-k][2]+dp[v][k][0])));
}
siz[u]+=siz[v];
}
ans=std::min(ans,std::min({dp[u][m][0],dp[u][m][1],dp[u][m][2]}));
for(int j=0;j<=n;j++){
dp[u][j][2]=std::min({dp[u][j][0],dp[u][j][1],dp[u][j][2]})+2*c;
dp[u][j][1]=std::min(dp[u][j][0],dp[u][j][1])+c;
dp[u][j][0]=dp[u][j][0]+2*c;
}
}
int main(){
int u,v,c;
scanf("%d%d",&n,&m);
for(int i=1;i<n;i++)scanf("%d%d%d",&u,&v,&c),g[u].push_back((edge){v,c}),g[v].push_back((edge){u,c});
ans=INF;
Dfs(1,0,0);
printf("%d\n",ans);
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 1ms
memory: 1348kb
input:
10 7 1 2 35129 2 3 42976 3 4 24497 2 5 83165 1 6 4748 5 7 38311 4 8 70052 3 9 3561 8 10 80238
output:
184524
result:
ok 1 number(s): "184524"
Test #2:
score: 10
Accepted
time: 91ms
memory: 107012kb
input:
3000 3000 1 2 80232 1 3 31904 1 4 24318 1 5 70898 1 6 54285 1 7 99203 1 8 36858 1 9 52269 1 10 21554...
output:
293195939
result:
ok 1 number(s): "293195939"
Test #3:
score: 10
Accepted
time: 0ms
memory: 1544kb
input:
50 32 1 2 78088 1 3 59372 2 4 12219 3 5 17188 2 6 51314 3 7 72028 3 8 1593 4 9 65442 5 10 97450 6 11...
output:
1758096
result:
ok 1 number(s): "1758096"
Test #4:
score: 10
Accepted
time: 0ms
memory: 1548kb
input:
50 48 1 2 60240 2 3 71246 3 4 21134 2 5 75461 5 6 4274 6 7 87233 6 8 74521 4 9 81504 8 10 23918 5 11...
output:
3245532
result:
ok 1 number(s): "3245532"
Test #5:
score: 10
Accepted
time: 0ms
memory: 2576kb
input:
200 36 1 2 95675 1 3 46068 3 4 92249 2 5 79443 4 6 11920 6 7 28895 4 8 25231 5 9 82622 8 10 34349 8 ...
output:
1214282
result:
ok 1 number(s): "1214282"
Test #6:
score: 10
Accepted
time: 0ms
memory: 2584kb
input:
200 35 1 2 97551 2 3 27011 2 4 14709 1 5 27407 2 6 57345 5 7 63132 7 8 89143 4 9 30986 5 10 89545 7 ...
output:
1341305
result:
ok 1 number(s): "1341305"
Test #7:
score: 10
Accepted
time: 91ms
memory: 107012kb
input:
3000 666 1 2 65806 1 3 53490 1 4 43794 1 5 63048 1 6 10670 1 7 56872 1 8 71919 1 9 78642 1 10 9831 1...
output:
14876698
result:
ok 1 number(s): "14876698"
Test #8:
score: 10
Accepted
time: 82ms
memory: 107196kb
input:
3000 1633 1 2 73534 2 3 97254 3 4 96323 4 5 88456 5 6 287 6 7 7380 7 8 63246 8 9 57273 9 10 23915 10...
output:
74678010
result:
ok 1 number(s): "74678010"
Test #9:
score: 10
Accepted
time: 67ms
memory: 107020kb
input:
3000 2612 1 2 85560 1 3 99187 1 4 40779 1 5 70190 1 6 50395 1 7 9810 1 8 87504 1 9 600 1 10 78858 1 ...
output:
231082152
result:
ok 1 number(s): "231082152"
Test #10:
score: 10
Accepted
time: 56ms
memory: 107128kb
input:
3000 858 1 2 51625 1 3 28801 1 4 85825 3 5 92506 5 6 76389 4 7 74801 3 8 49889 6 9 81981 9 10 73122 ...
output:
38161665
result:
ok 1 number(s): "38161665"
Extra Test:
score: 0
Extra Test Passed