hdoj 3298 Contestants
来源:互联网 发布:开电话会议用什么软件 编辑:程序博客网 时间:2024/05/29 13:47
Contestants
树形DP题目,这个题目与hduoj4081以及金华邀请赛的power station (POJ 4045)比较相似。不过这个题目相对于后面两个要简单的多。我们可以先进行一遍DFS处理出以1为根节点的树的所有节点的子节点数目,然后就是求最小差值。枚举每条边,这里可以直接枚举点来进行。注意数据范围就可以了。
#include <iostream>#include <string.h>#include <stdio.h>#include <vector>using namespace std ;#define MAXN 100005#define INF 100000000000005LLvector<int> G[MAXN] ;int n ;int m ;int num[MAXN] ;long long sum[MAXN] ;long long nmin ;void dfs1(int far , int v){ sum[v] +=(long long) num[v] ; for(int i = 0 ; i <G[v].size() ; i ++){ int u = G[v][i] ; if(u!=far){ dfs1(v , u) ; sum[v] += sum[u] ; } }}void dfs2(int far , int v){ for(int i = 0 ; i < G[v].size() ; i ++){ int u = G[v][i] ; if(far != u){ long long tmp ; tmp = (long long)(sum[v] - sum[u]) > sum[u] ? (sum[v] - 2*sum[u]) : (2*sum[u] - sum[v]) ; nmin = min(nmin , tmp) ; sum[u] = sum[v] ; dfs2(v , u) ; } }}void init(){ for(int i = 1 ; i <= n ; i ++){ G[i].clear() ; } memset(sum , 0 , sizeof(sum)) ;}int main(){ int T ; T = 0 ; while(scanf("%d%d" , &n , &m) , m + n){ init() ; for(int i = 1 ; i <= n ; i ++){ scanf("%d" , &num[i]) ; } int a ; int b ; for(int i = 1 ; i <= m ; i ++){ scanf("%d%d" , &a , &b) ; G[a].push_back(b) ; G[b].push_back(a) ; } nmin = INF ; dfs1(0 , 1) ; dfs2(0 , 1) ; printf("Case %d: %I64d\n" , ++T , nmin) ; } return 0 ;}
- hdoj 3298 Contestants
- 【DFS】 HDU 3298 Contestants
- hdu 3298Contestants 树形dp
- million contestants:算法分析
- poj 3140 Contestants Division
- POJ--3140--Contestants Division
- poj 3140 Contestants Division
- poj3140(dfs) Contestants Division
- POJ3140--Contestants Division
- poj 3140 Contestants Division
- POJ 3140 Contestants Division
- POJ 3140 Contestants Division
- Poj 3140 Contestants Division
- 3140 Contestants Division
- [codeforces873E]Awards For Contestants
- POJ-3140-Contestants Division
- POJ3140 Contestants Division(树形DP)
- POJ 3140 Contestants Division (DFS)
- oracle中的函数(一)
- 超级实用且不花哨的Js 代码大全
- C#读取Excel中合并单元格解决办法
- Struts1 和Struts2的区别
- 竞争从来都是血腥的
- hdoj 3298 Contestants
- struts2访问网页元素,Ioc(DI)思想与实现很重要!
- 堆和栈
- Maven把jar文件导入本地库
- pl/sql学习5——变长数组
- 弹窗代码汇总
- python 用于网站抓取 登录 发布的模块介绍
- 开源数据库连接池的比较
- 惠普激光打印机disable smart installer 的方法