HDU 2196 Computer 树形DP(2个dfs)
来源:互联网 发布:颜色代码源码 编辑:程序博客网 时间:2024/06/06 21:23
树形DP, 2 个dfs。
前几天觉得很难,现在可以说是水题了。
View Code
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define maxn 10003struct E{ int v, next, w;}edge[maxn<<1];int tot, head[maxn];int n, m;void init(){ tot = 0; memset(head, -1, sizeof(int)*(n+1));}void add(int s, int t, int w){ edge[tot].v = t; edge[tot].w = w; edge[tot].next = head[s]; head[s] = tot++;}int f1[maxn], f2[maxn];int g1[maxn], g2[maxn];void dfs1(int u, int pre){ int i; f1[u] = f2[u] = 0; for(i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].v; if(v == pre) continue; int w = edge[i].w; dfs1(v, u); if(f1[v] + w > f2[u]) { f2[u] = f1[v] + w; g2[u] = v; if(f1[u] < f2[u]) { swap(f1[u], f2[u]); swap(g1[u], g2[u]); } } }}void dfs2(int u, int pre){ int i; for(i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].v; if(v == pre) continue; int w = edge[i].w; if(g1[u] == v) { if(f2[v] < f2[u] + w) { f2[v] = f2[u] + w; g2[v] = u; if(f1[v] < f2[v]) { swap(f1[v], f2[v]); swap(g1[v], g2[v]); } } } else { if(f2[v] < f1[u] + w) { f2[v] = f1[u] + w; g2[v] = u; if(f1[v] < f2[v]) { swap(f1[v], f2[v]); swap(g1[v], g2[v]); } } } dfs2(v, u); }}int main(){ int i, j; int x, y; while( ~scanf("%d", &n)) { init(); for(i = 2; i <= n; i++) { scanf("%d%d", &x, &y); add(i, x, y); add(x, i, y); } dfs1(1, -1); dfs2(1, -1); for(i = 1; i <= n; i++) printf("%d\n", f1[i]); } return 0;}
- HDU 2196 Computer 树形DP(2个dfs)
- HDU 2196 Computer 树形DP+dfs预处理
- hdu 2196 Computer dfs / 树形dp
- hdu 2196 Computer(树形DP,两次dfs)好好看。。。
- hdu 2196 Computer (树形dp+两次dfs遍历)
- 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)
- hdu 2196 Computer (树形dp)
- *HDU 2196 - Computer(树形DP)
- [HDU 2196] Computer 树形dp
- HDU 2196Computer 树形dp
- POJ 2823 Sliding Window 双端队列入门题
- MySQL Cluster2个数据节点压力测试--mysqlslap工具压400W写
- Android1.6及以下读取联系人方法
- POJ 4001 -- 4003 2011福州 A,B,C题
- 自动登录的实现
- HDU 2196 Computer 树形DP(2个dfs)
- POJ 4026 Eve 并查集模拟题
- Codeforces Round #142 (Div. 2) 解题报告
- HDU 4126 Genghis Khan the Conqueror prim + 树形DP 好题
- POJ 2187 Beauty Contest 旋转卡壳入门题
- Fedora 下 安装 chrome
- POJ 3436 ACM Computer Factory 拆点 + 最大流
- POJ图论列表,想学图论的可以做下,打*的是经典题,蛮多都比较难,基础知识多看几次再做
- POJ 3469 Dual Core CPU 最小割入门题