POJ -- 3140
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define MAXN 1000010
#define LL long long
const LL INF = 0x7fffffffffffff;
using namespace std;
typedef struct{
int to,next;
}Node;
Node edge[*MAXN];
int vis[MAXN/],head[MAXN/],val[MAXN/];
LL sum[MAXN/],all_sum,ans;
LL My_abs(LL tmp){return tmp < ? -tmp : tmp;}
void addedge(int u,int v,int k){
edge[k].to = v;
edge[k].next = head[u];
head[u] = k;
}
LL dfs_sum(int s){
vis[s] = ;
sum[s] = val[s];
for(int i = head[s];~i;i = edge[i].next){
int u = edge[i].to;
if(!vis[u]) sum[s] += dfs_sum(u);
}
return sum[s];
}
void dfs_minabs(int s){
vis[s]= ;
for(int i = head[s];~i;i = edge[i].next){
int u = edge[i].to;
if(!vis[u]){
dfs_minabs(u);
ans = min(ans,My_abs(all_sum - *sum[u]));
}
}
}
int main(){
int n,m,cas = ;
freopen("in.c","r",stdin);
while(~scanf("%d%d",&n,&m) && (m+n) ){
int k = ,tmp,u,v;
all_sum = ;
for(int i = ;i <= n;i ++) scanf("%d",&tmp),val[i] = tmp,all_sum += tmp;
memset(head,-,sizeof(head));
for(int i = ;i < m;i ++){
scanf("%d%d",&u,&v);
addedge(u,v,k++);
addedge(v,u,k++);
}
memset(vis,,sizeof(vis));
dfs_sum();
ans = INF;
memset(vis,,sizeof(vis));
dfs_minabs();
if(n == ) ans = val[];
printf("Case %d: %lld\n",++cas,ans);
}
return ;
}
POJ -- 3140的更多相关文章
- 【POJ 3140】 Contestants Division(树型dp)
id=3140">[POJ 3140] Contestants Division(树型dp) Time Limit: 2000MS Memory Limit: 65536K Tot ...
- poj 3140(树形dp)
题目链接:http://poj.org/problem?id=3140 思路:简单树形dp题,dp[u]表示以u为根的子树的人数和. #include<iostream> #include ...
- POJ 3140.Contestants Division 基础树形dp
Contestants Division Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10704 Accepted: ...
- poj 3140 树形去边差异最小
http://poj.org/problem?id=3140 依然是差异最小问题,不过这次是去边.思路是这样的,先记录每个点的子节点个数,然后遍历每个边. 有两个问题要注意: abs可能会出编译适配问 ...
- POJ 3140 Contestants Division (树dp)
题目链接:http://poj.org/problem?id=3140 题意: 给你一棵树,问你删去一条边,形成的两棵子树的节点权值之差最小是多少. 思路: dfs #include <iost ...
- POJ 3140 Contestants Division 树形DP
Contestants Division Description In the new ACM-ICPC Regional Contest, a special monitoring and su ...
- POJ 3140 Contestants Division
题目链接 题意很扯,就是给一棵树,每个结点有个值,然后把图劈成两半,差值最小,反正各种扯. 2B错误,导致WA了多次,无向图,建图搞成了有向了.... #include <cstdio> ...
- poj 3140 Contestants Division(树形dp? dfs计数+枚举)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- POJ 3140 Contestants Division 【树形DP】
<题目链接> 题目大意:给你一棵树,让你找一条边,使得该边的两个端点所对应的两颗子树权值和相差最小,求最小的权值差. 解题分析: 比较基础的树形DP. #include <cstdi ...
随机推荐
- 对比iOS中的四种数据存储
来自于大牛的文章给大家分享下 :http://www.infoq.com/cn/articles/data-storage-in-ios/
- 不同浏览器下css 透明度的写法
filter:alpha(opacity=90); /* IE transparent */ -moz-opacity:0.9; /* Moz + FF transparent */ opacity: ...
- 引用传递&值传递
下面的程序阐述了值传递与应用传递的区别. package com.liaojianya.chapter1; /** * This program demonstrates the use of arr ...
- 「Windows MFC 」「Edit Control」 控件
「Windows MFC 」「Edit Control」 控件
- (hdu)5234 Happy birthday 二维dp+01背包
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5234 Problem Description Today is Gorwin’s birt ...
- SGU 260.Puzzle (异或高斯消元)
题意: 有n(<200)个格子,只有黑白两种颜色.可以通过操作一个格子改变它和其它一些格子的颜色.给出改变的关系和n个格子的初始颜色,输出一种操作方案使所有格子的颜色相同. Solution: ...
- EF 存储过程(下)
本节,我们将学习如何手动添加/修改存储过程,如何使EF能够支持Output类型的参数 > 添加/修改存储过程 有时候,某个SQL语句比较复杂,但是数据库中又没有定义相应的存储过程.这个时候,我们 ...
- ASP.NET一些常用的东西
三层架构的命名: UI: User Interface (数据显示层 用户界面)BLL:Business Logic Layer (业务逻辑层)DAL:Data Access Layer (数据访问层 ...
- apache的MPM机制-prefork
apache是基于模块化设计的. 关于基础的服务,也采用了模块化的设计,但是这个模块是具有排他性的,同一时间只能有一个得到调用. MPM模块(multi processing module) 多处理模 ...
- html网页音乐播放器自带播放列表
基于网页的音乐播放器demo http://pan.baidu.com/s/1dDgm7HR 自己diy了一个手机端在线音乐播放器演示地址http://shanxi2014.com/zhuandiz ...