HDU 2196 Computer (经典树形DP)
来源:互联网 发布:怎么取消mac在线 编辑:程序博客网 时间:2024/05/16 18:28
本文出自点击打开链接
本人代码:
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn = 100005;struct Nod{ int b,val,next; void init(int b,int val,int next){ this->b = b;this->val = val;this->next = next; }}buf[maxn<<1];int len,E[maxn];int n,dp[maxn][3];void init(){ len = 0; memset(E,-1,sizeof(E)); memset(dp,0,sizeof(dp));}void add_Edge(int a,int b,int val){ buf[len].init(b,val,E[a]);E[a]=len++; buf[len].init(a,val,E[b]);E[b]=len++;}void dfsOne(int u,int pre){ int i,v,cost; for(i = E[u] ; i != -1 ; i = buf[i].next){ v = buf[i].b;cost = buf[i].val; if(v == pre) continue; dfsOne(v,u); if(dp[u][0] < dp[v][0] + cost){ dp[u][1] = dp[u][0];dp[u][0] = dp[v][0] + cost;} else if(dp[u][1] < dp[v][0] + cost) dp[u][1] = dp[v][0] + cost; }}void dfsTwo(int u,int pre){ int i,dist; for(i = E[u] ; i != -1 ; i = buf[i].next) if(buf[i].b == pre) { dist = buf[i].val;break; } if(pre != -1){ if(dist + dp[u][0] == dp[pre][0]){ dp[u][2] = dist + max(dp[pre][1],dp[pre][2]); }else dp[u][2] = dist + max(dp[pre][0],dp[pre][2]); } //cout<<u<<" "<<pre<<" "<<dist<<" "<<dp[u][2]<<endl; for(i = E[u] ; i != -1 ; i = buf[i].next) if(buf[i].b != pre) dfsTwo(buf[i].b,u);}int main(){ while(~scanf("%d",&n)){ int i,b,val; init(); for(i = 2; i <= n ; i++){ scanf("%d%d",&b,&val); add_Edge(i,b,val); } dfsOne(1,-1); dfsTwo(1,-1); for(int i = 1;i <= n; i++) //cout<<dp[i][0]<<" "<<dp[i][1]<<" "<<dp[i][2]<<endl; printf("%d\n",max(dp[i][0],dp[i][2])); } return 0;}
0 0
- 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)
- 【树形DP】 HDU 2196 Computer
- HDU 2196 Computer(树形DP)
- Hdu 2196 Computer(树形dp)
- Computer - HDU 2196 树形dp
- Hdu 2196 Computer (树形dp)
- HDU 2196 Computer | 树形dp
- 【树形DP】 HDU 2196 Computer
- HDU 2196 Computer (树形DP)
- 黑马程序员------C语言中对形参和实参的理解
- HDU-2717
- .NET三层架构与EF
- 解决eclipse启动插件时PermGen space问题
- 编译原理词法分析(文本输入)源程序
- HDU 2196 Computer (经典树形DP)
- 关于数据库操作的一些总结
- poj 1631 nologn LIS
- iOS C语言5_二维数组
- 原因和解决方案都已经找到
- C#如何连接SqlServer2005非默认实例
- Android广播消息及BroadcastReceiver
- Tcp通信中的三次握手和四次挥手
- java.util.Scanner