poj 3140 Contestants Division 树的遍历
来源:互联网 发布:电话营销软件 编辑:程序博客网 时间:2024/05/07 11:07
题意:
给一棵树,每个节点有一个值v,现在要去掉一条边,使分成的两棵树的v的和的差值最小。
分析:
水题,注意数据范围。
代码:
//poj 3140//sep9#include <iostream>using namespace std;const int maxN=200024;int n,m,e;__int64 sum,ans;struct Edge{int v,next;}edge[maxN]; __int64 v[maxN];int head[maxN];__int64 dfs(int p,int u){__int64 tmp=v[u];for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(v!=p){__int64 t=dfs(u,v);ans=min(ans,max(t,sum-t)-min(t,sum-t));tmp+=t;}}return tmp;}int main(){int cases=0;while(scanf("%d%d",&n,&m)==2&&n){e=0,sum=0;memset(head,-1,sizeof(head));for(int i=1;i<=n;++i){scanf("%I64d",&v[i]);sum+=v[i];}while(m--){int a,b;scanf("%d%d",&a,&b);edge[e].v=b;edge[e].next=head[a];head[a]=e++;edge[e].v=a;edge[e].next=head[b];head[b]=e++;}ans=sum;dfs(-1,1);printf("Case %d: %I64d\n",++cases,ans);}return 0;}
0 0
- poj 3140 Contestants Division 树的遍历
- poj 3140 Contestants Division
- POJ--3140--Contestants Division
- poj 3140 Contestants Division
- poj 3140 Contestants Division
- POJ 3140 Contestants Division
- POJ 3140 Contestants Division
- Poj 3140 Contestants Division
- POJ-3140-Contestants Division
- poj 3140 Contestants Division(树dp)
- poj 3140 Contestants Division(树dp)
- POJ-3140 Contestants Division(树dp)
- POJ 3140 Contestants Division (DFS)
- POJ 3140 Contestants Division (水题)
- poj 3140 Contestants Division 水题
- poj 3140 Contestants Division DFS
- POJ 3140 Contestants Division 笔记
- pku 3140 Contestants Division(树的划分)
- JavaScript:prototype&apply&call
- 1、java网页抓取技术
- Python学习笔记——Python开发中的网络操作
- 《Cocos2d学习之路》四,播放音乐与音效以及Menu的学习使用
- OpenWrt 编译(一)
- poj 3140 Contestants Division 树的遍历
- [编程语言][C语言]C语言的历史
- 面向对象和模式概念篇
- JDK各个版本的新特性jdk1.5-jdk8
- Handler与HandlerThread区别,HandlerThread应用(对比AsyncTask)
- JList的用法
- c socket 发送http请求 (一)
- text3-1——奇偶个数
- java 23种设计模式