hdu 4003 求用k个机器人遍历一棵树的所有节点所需的最小花费
来源:互联网 发布:ieee 论文提交 知乎 编辑:程序博客网 时间:2024/06/03 22:01
#include<cstdio>#include<cstring>#define MIN(x,y) ((x)>(y)?(y):(x))struct node{int to,next,cost;}e[20000];int head[10000],dp[10000][12],cnt,n,s,k;void add_edge(int from,int to,int c){e[cnt].to=to;e[cnt].cost=c;e[cnt].next=head[from];head[from]=cnt++;}void dfs(int u,int v){for(int i=head[u];i!=-1;i=e[i].next){int to=e[i].to;int cost=e[i].cost;if(to==v)continue;dfs(to,u);for(int j=k;j>=0;j--){dp[u][j]+=dp[to][0]+2*cost;for(int p=1;p<=j;p++)dp[u][j]=MIN(dp[u][j],dp[u][j-p]+dp[to][p]+p*cost);}}}int main(){while(~scanf("%d%d%d",&n,&s,&k)){cnt=0;memset(head,-1,sizeof(head));memset(dp,0,sizeof(dp));for(int i=1;i<n;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);add_edge(a,b,c);add_edge(b,a,c);} dfs(s,-1);printf("%d\n",dp[s][k]);}}
0 0
- hdu 4003 求用k个机器人遍历一棵树的所有节点所需的最小花费
- HDU 4003 Find Metal Mineral(树形dp,从根节点出发k个机器人遍历所有边的最小代价和)
- hdu4003 2011大连赛区网赛1003一棵树,K个机器人遍历所有结点所需的最少权值和
- HDU 3987 求断开两点最小花费下的边数 最小割
- 求K个最小的数
- 求最小的k个元素
- 有关单链表的两个问题【遍历一次求中间节点,倒数第K个结点】
- 算法面试题:求最小的k个束/求数组中最小的k个数
- UVA 10714-Ants(求花费的最大最小时间)
- 求二叉搜索树的第k个节点
- 遍历n个节点能够形成的所有二叉树
- 求输入n个整数中最小的k个数
- 求最小的k个数字和求第k小的数字
- 求最小的K个数
- 求最小的k个数
- 求最小的k个数
- uva(11997,求k个表的组合最小k个值)
- DP求最小花费
- Pro android 之一 :初步了解android
- eclipse快捷键总结
- Java 堆、栈、方法区的区别
- MTD应用学习札记
- 4.Hadoop与Spark比较
- hdu 4003 求用k个机器人遍历一棵树的所有节点所需的最小花费
- Virtualbox 虚拟机安装苹果操作系统MAC OS X Lion教程
- iFunk游戏本或成娱乐时代新宠
- Caffe CNN特征可视化
- Angularjs API整理(一) function篇
- BZOJ 1109: [POI2007]堆积木Klo
- Centos 6.5 安装升级谷歌浏览器
- [Leetcode] 119. Pascal's Triangle II 解题报告
- java 正则贪婪匹配