Description

Input

Output

对于每组数据,输出一行。若蔬菜的总价能无限制增大,输出"+inf"(不含引号)。否则输出一个整数,表示所有蔬菜的最大总价。
 

首先如果一个非根的点有多个权值不同的孩子,显然答案为+inf,否则为了便于讨论将原树进行一些转换(代码实现中只是隐式处理):

根的权值不会改变,根的子树间互不影响。可以删去根(并计入答案),对每个原先父亲为根的点,新建一个点作为其父亲,权值与根相同(新建的点不计入答案)

叶子的权值不会改变。如果一个点的所有孩子都是叶子,只保留一个孩子(被删去的叶子直接计入答案)

由此得到一个有根森林。对每个连通块,如果每个点至多有一个孩子,构成一条链,那么在链上操作相当于交换相邻两条边的边权(边权定义为两端点权之差),无论如何都无法达到inf,可以贪心将边权排序得到最大值。否则,存在至少一个点有2个或更多孩子,这时当且仅当所有边权相同时答案不是inf(此时操作无效)(若有不同的边权,可通过操作传递至有两个孩子的点上,导致答案为inf(严格的说,不在链上时,操作除了交换两边边权还可能影响其他边权,但并不影响上述结论成立))

#include<cstdio>
#include<algorithm>
int _(){
int x;
scanf("%d",&x);
return x;
}
typedef long long i64;
const int N=,v0=0x3f3f3f3f;
int n;
int fa[N],son[N],v[N],sv[N],deg[N],cl[N];
int ss[N],sp;
bool nl[N];
i64 ans;
#define ass(x) if(x)n/=0
int main(){
//freopen("in.txt","r",stdin);
while(n=_()){
_();
ans=v[]=_();
bool _inf=;
for(int i=;i<=n;++i){
sv[i]=v0;deg[i]=cl[i]=son[i]=;
int f=fa[i]=_();
ass(f>i);
v[i]=_();
if(f==)continue;
++deg[f];
son[f]=i;
if(sv[f]==v0)sv[f]=v[i]-v[fa[i]];
else if(sv[f]!=v[i]-v[fa[i]])_inf=;
}
if(_inf)goto o;
for(int i=;i<=n;++i)if(!deg[i])ans+=v[i],++cl[fa[i]];
//for(int i=2;i<=n;++i)printf("%d:%d %d\n",i,deg[i],cl[i]);
for(int i=;i<=n;++i)nl[i]=nl[fa[i]]||deg[i]-cl[i]-!cl[i]>;
for(int i=n;i>=;--i)nl[fa[i]]|=nl[i];
nl[]=;
for(int i=;i<=n;++i)if(deg[i]){
if(nl[i]){
ans+=v[i];
if(sv[i]!=v[i]-v[fa[i]])goto o;
}else if(fa[i]==){
sp=;
for(int w=i;w;w=son[w])ss[sp++]=v[w]-v[fa[w]];
std::sort(ss,ss+sp);
for(i64 x=v[];sp>;ans+=x+=ss[--sp]);
}
}
printf("%lld\n",ans);
continue;
o:{
puts("+inf");
continue;
}
}
return ;
}

bzoj1825: [JSOI2010]蔬菜庆典的更多相关文章

  1. bzoj 1825: [JSOI2010]蔬菜庆典

    1825: [JSOI2010]蔬菜庆典 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 112  Solved: 45[Submit][Status][ ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 【JSOI2010】Group 部落划分 BZOJ 1821

    1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec  Memory Limit: 64 MB     聪聪研究发现,荒岛野人总是过着群居的生活,但是 ...

  4. Bzoj1823 [JSOI2010]满汉全席

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1640  Solved: 798 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的 ...

  5. 【BZOJ】1821: [JSOI2010]Group 部落划分 Group(最小生成树+贪心)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1821 这题裸题. 本题要求最短距离最长,很明显,我们排序. 这里存在贪心,即我们把边权最小的 ...

  6. 1822: [JSOI2010]Frozen Nova 冷冻波 二分最大流

    1822: [JSOI2010]Frozen Nova 冷冻波 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 585  Solved: 175[Subm ...

  7. BZOJ 2208: [Jsoi2010]连通数 tarjan bitset

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  8. bzoj2208:[Jsoi2010]连通数

    http://blog.csdn.net/u013598409/article/details/47037499 里面似乎有生成数据的... //我本来的想法是tarjan缩点之后然后将图遍历一遍就可 ...

  9. BZOJ_1821_[JSOI2010]_部落划分_(贪心,并查集)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1821 给出n个点的坐标,将n个点划分成k个部分,使得每个部分之间最小的距离最大. 分析 每两个 ...

随机推荐

  1. Using XmlHttpRequest 写JSON网页

    代码如下-----xmlhttprequest.responseJSON: <!DOCTYPE html> <html> <head> <meta chars ...

  2. CriticalSection 临界区

    // 临界区.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include<windows.h>#include<iost ...

  3. iOS调用第三方地图App进行导航方法

    前言 App内根据手机上装载的地图App将其显示在弹出的选择框,选择对应地图跳转进入地图导航.需要用到- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS( ...

  4. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(五)

    MyEclipse超值折扣 限量 100 套! 立即开抢>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的形 ...

  5. <NET CLR via c# 第4版>笔记 第16章 数组

    //创建一个一维数组 int[] myIntegers; //声明一个数组引用 myIntegers = new int[100]; //创建含有100个int的数组 //创建一个二维数组 doubl ...

  6. C++中特殊的宏定义

    常规用法不再介绍,做如下几点说明和介绍 1. 带参数的宏只完成简单字符替换,之前不做计算实参的工作,如下 #define SUM(x,y) x+yint a=3,b=2,c=1;int s;s=SUM ...

  7. NBUT 1223 Friends number 2010辽宁省赛

    Time limit  1000 ms Memory limit   131072 kB Paula and Tai are couple. There are many stories betwee ...

  8. 【leetcode】2-AddTwoNums

    problem: Add Two Numbers 需要学习的是单向链表的基础使用:

  9. 你在AutoHotKey面前居然敢比调音量 - imsoft.cnblogs

    当你正在电脑游戏中酣战之际.或者正沉浸在动作大片紧张激烈的情节中.或者正在全神贯注的聆听优美动听音乐……,在这些场景中,如果你需要迅速对音量进行调节(例如增大减小音量,或者静音)怎么办?难道返回Win ...

  10. BC32(hdu5182~5185)

    恩……又是一个悲伤的故事,然后BC做出来一题,因为自己傻逼,可能紧张,也可能是其他,反正没看全题目就敲,敲完WA,WA完改,改完WA,没了……大概五十几分钟WA了五法,然后问了才知道没看全,就这样,后 ...