HDU 2196 —— Computer(树形DP)
来源:互联网 发布:淘宝运险费是什么意思 编辑:程序博客网 时间:2024/06/18 02:31
题目:Computer
题意:给定一棵N个节点的树已经边的长度,求出每个点到其它点的最长距离。
经典树形dp题,一次dfs求出每个点到孩子的最长距离(第一长和第二长),第二次dfs求出最终答案。
题外话:近期屡屡被树形dp虐,看出来也写不出程序,写出来也调不出样例,调出个样例也还是个WA,于是痛定思痛,回去好好复习树形dp。。。
#include<cstdio>#include<cstring>#include<vector>using namespace std;const int N = 100010;#define pb push_backvector<int> V[N];vector<int> G[N];int n, dp[N][2], to[N][2], ans[N];void dfs(int x){ dp[x][0]=dp[x][1]=-1; for(int i=0; i<V[x].size(); i++){ int j = V[x][i]; int d = G[x][i]; dfs(j); d += dp[j][0]; if(d>dp[x][1]){ dp[x][1]=d; to[x][1]=j; } if(dp[x][1]>dp[x][0]){ swap(dp[x][0], dp[x][1]); swap(to[x][0], to[x][1]); } } if(dp[x][0]==-1) dp[x][0]=0;}void dfs2(int x, int D){ ans[x] = max(D, dp[x][0]); for(int i=0; i<V[x].size(); i++){ int j = V[x][i]; int d = G[x][i]; if(j==to[x][0]){ if(dp[x][1]==-1) dfs2(j, D+d); else dfs2(j, max(D,dp[x][1])+d); } else{ dfs2(j, max(D,dp[x][0])+d); } }}int main(){ while(~scanf("%d", &n)){ for(int i=1; i<=n; i++){ V[i].clear(); G[i].clear(); } int a, b; for(int i=2; i<=n; i++){ scanf("%d %d", &a, &b); V[a].pb(i); G[a].pb(b); } dfs(1); dfs2(1, 0); for(int i=1; i<=n; i++) printf("%d\n", ans[i]); } return 0;}
0 0
- HDU 2196——Computer(树形DP)
- HDU 2196 Computer——树形dp
- HDU 2196 —— Computer(树形DP)
- hdu 2196 Computer(DP-树形DP)
- HDU 2196--Computer(树形dp)
- hdu 2196 computer (树形dp)
- HDU 2196 Computer(树形dp经典)
- HDU 2196 Computer(经典树形DP)
- HDU 2196 Computer(树形dp)
- hdu 2196 Computer(树形DP)
- hdu 2196 Computer(经典树形DP)
- HDU 2196 Computer(树形DP)
- hdu 2196 computer(树形dp)
- HDU 2196 Computer(树形dp经典)
- HDU 2196 Computer(树形DP)
- HDU 2196 Computer (树形DP)
- [HDU 2196] Computer (树形dp)
- hdu 2196 Computer (树形DP)
- 关于php中ajax运用时的中文乱码问题的解决
- Activity基本详讲
- 在C语言中嵌入汇编语言方法
- Spring AOP 实现原理与 CGLIB 应用
- 关于readystate==1状态下的ajax效果不能显示的问题的解决
- HDU 2196 —— Computer(树形DP)
- TCP/IP三次握手与四次握手
- php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
- 获取权限id集合
- Tutorials for Chi-square Distribution 1
- [算法导论] 函数的增长---渐进记号
- 程序员常去的14个顶级开发社区(Mark)
- postgresql常用知识
- 基于数字证书的UKEY安全登录 与身份认证技术研究