POJ 3140 Contestants Division

来源:互联网 发布:js 数组 增加 编辑:程序博客网 时间:2024/05/19 19:59

树形dp,水。 求将一棵节点有权值的树分成两块,两块总权值差最小值。

ps:注意本题要用longlong,第一次应该wa在这里,然后换了种写法,导致tot和mv未初始化,再wa一发。还是将tot和mv的初始化放进init中好,这类题目初始化问题需要格外注意,不能忘了调用init。

#include <cstdio>#include <algorithm>#include <cstring>#include <cstdlib>#include <iostream>#include <cmath>using namespace std;typedef long long LL;#define INF 100000000000007#define N 200005int n, m;struct Node{    int v;    Node *next;}e[N], *head[N];LL sum[N], peo[N];int ptr = 0;LL mv;LL tot;void init(){    ptr = 0;    mv = INF;    tot = 0;    for(int i = 0; i <= n; i++){        head[i] = NULL;        sum[i] = 0;        peo[i] = 0;    }}void adde(int x, int y){    e[ptr].v = x;    e[ptr].next = head[y];    head[y] = &e[ptr ++];    e[ptr].v = y;    e[ptr].next = head[x];    head[x] = &e[ptr ++];}LL tdp(int x, int par){    Node *p = head[x];    sum[x] += peo[x];    while(p){        if(p -> v != par){            LL vv = tdp(p -> v, x);            sum[x] += vv;        }        p = p -> next;    }    return sum[x];}int main(){    int num = 1;    while(scanf("%d%d", &n, &m) , n || m){        init();        for(int i = 1; i <= n; i++){            scanf("%d", &peo[i]);            tot += peo[i];        }        int x, y;        for(int i = 0; i < m; i++){            scanf("%d%d", &x, &y);            adde(x, y);        }        tdp(1, 0);        for(int i = 1; i <= n; i++){            LL vv = tot - sum[i] * 2;            if(vv < 0) vv = - vv;            if(vv < mv)mv = vv;        }        printf("Case %d: ", num++);        printf("%I64d\n", mv);    }    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一个月的宝宝鼻子不通气怎么办 六个月的宝宝有清水鼻涕怎么办 一岁三个月宝宝流清鼻涕怎么办 宝宝流清水鼻涕怎么办最简单方法 8个月宝宝流清鼻涕怎么办 7个月宝宝流清鼻涕怎么办 9个月宝宝流清鼻涕怎么办 十一个月宝宝流清鼻涕怎么办 18个月宝宝咳嗽有痰怎么办 2个月宝宝鼻子不通气怎么办 两个月的宝宝鼻塞不通气怎么办 两个月大的宝宝鼻子不通气怎么办 宝宝6个月咳嗽有痰怎么办 6个月的宝宝有痰怎么办 小孩流有点咳嗽和脓鼻涕怎么办 6个月的宝宝流鼻涕该怎么办? 小孩鼻塞不流鼻涕总吸鼻子怎么办 四个多月宝宝感冒鼻塞严重怎么办 怀孕6个月严重感冒鼻塞怎么办 16个月的宝宝上火流鼻血怎么办 小狗咳嗽打了针还不好怎么办 孕妇感冒后鼻涕带血口腔发炎怎么办 宝宝出生17天睡眠不安稳怎么办 月子里宝宝睡觉老是睡不安稳怎么办 孕妇晚期咳嗽鼻涕黄咽喉痛怎么办 狗狗流脓鼻涕拉稀没食欲怎么办 孕妇眼睛充血很快就有眼屎怎么办 婴儿的眼睛流泪生眼屎怎么办呀 刚出生的婴儿眼睛有眼屎怎么办 25天的婴儿鼻子有鼻屎不通怎么办 一个月的宝宝好多鼻屎怎么办 隆鼻取线的时候好多鼻屎怎么办 小孩流浓鼻涕怎么办最简单方法 小孩流黄鼻涕怎么办最简单方法 一岁八个月宝宝鼻涕和痰多怎么办 空调铜管过不了预埋管的弯头怎么办 如果朝鲜和韩国打起来中国怎么办 寄信时不知道对方的邮编怎么办 地下钱庄转账后银行户被冻结怎么办 老师遇到素质极差的垃圾学生怎么办 验证码忘了手机号也换了怎么办