HDOJ The more, The Better 树形DP
来源:互联网 发布:ios安卓数据互通的游戏 编辑:程序博客网 时间:2024/05/16 19:10
算是树形DP的入门题吧。学习了一下人家的代码过的。在网上看了几种版本。果然还是dfs遍历树好啊。树形结构用指针来建的话可以省去很多麻烦。另外这题不能赤裸裸的从叶子节点更新,因为根是可以选择多个叶子的。没用完一个叶子,就必须把相应的父亲节点更新。还不错的题。
#include<iostream>#include<cstring>#include<cstdio>#define MAXN 222using namespace std;struct node{ int point; node* next;}edge[MAXN],*ptr[MAXN];int N,M;int f[MAXN][MAXN];int value[MAXN];int edgeNum;int max( int a,int b ){ return a>b?a:b; }void addEdge( int father,int son ){ node *p=&edge[edgeNum++]; p->point=son; p->next=ptr[father]; ptr[father]=p;}void dfs( int cur,int deep ){ node *p=ptr[cur]; while( p!=NULL ) { for( int i=deep+1;i<=M;i++ ) f[p->point][i]=f[cur][i-1]+value[p->point]; dfs( p->point,deep+1 ); for( int i=deep+1;i<=M;i++ ) f[cur][i]=max( f[cur][i],f[p->point][i] ); p=p->next; }}int main(){ while( scanf( "%d %d",&N,&M ),N||M ) { M++; memset( f,0,sizeof(f) ); memset( value,0,sizeof(value) ); memset( ptr,0,sizeof(ptr) ); edgeNum=0; int father,val; for( int i=1;i<=N;i++ ) { scanf( "%d %d",&father,&val ); value[i]=val; addEdge( father,i ); } dfs( 0,1 ); printf( "%d\n",f[0][M] ); } return 0;}
- HDOJ The more, The Better 树形DP
- HDOJ 1561 The more, The Better (树形DP)
- HDOJ (HDU) 1561 The more, The Better (树形DP)
- HDOJ 1561 The more, The Better(树形DP)
- HDU1561 The more,The better 树形DP
- HDU1561 树形DP The more, The Better
- HDU1561 The more, The Better(树形dp)
- [hdu1561] The more, The Better 【树形DP】
- 【树形DP】HDU1561-The more, The Better
- hdu1561 The more, The Better--树形dp
- hdu1561 the more , the better 树形dp
- HDU1561The more, The Better (树形DP)
- hdu1561The more, The Better 树形dp
- hdu1561_The more, The Better(树形DP/背包)
- hdoj 1561 The more, The Better 【树形dp + 01-背包】【入门】
- hdu 1561 The more, The Better (树形DP)
- hdu 1561 The more, The Better 树形DP+背包
- hdu 1561 The more, The Better(树形dp)
- c语言编写的一些小程序
- Dynamic Proxy (动态代理模式)
- Prototype 原型模式(创建型模式)
- visual formatting model details简译 <二> 之 box的宽度
- java 连接各种数据库写法
- HDOJ The more, The Better 树形DP
- php将图片保存到mysql数据库及从数据库中读取图片的方法源码
- 二维数组和指针
- Sparks语言: 一种伪代码
- 微软大而不倒——独立研究的投入
- http://acm.nyist.net/JudgeOnline/problem.php?pid=336&&动态规划
- 关于linux0.12文件系统目录大小的一个发现
- android-SQLiteDatabase 和 SQLite 数据库
- 跑猴子命令