描述

huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫。

皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状;某些宫殿间可以互相望见。大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同。

可是xuzhenyi手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫。

帮助xuzhenyi布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少。

格式

输入格式

输入文件中数据表示一棵树,描述如下:

第1行 n,表示树中结点的数目。

第2行至第n+1n+1行,每行描述每个宫殿结点信息,依次为:该宫殿结点标号i(0<i≤n0<i≤n),在该宫殿安置侍卫所需的经费k,该点的儿子数m,接下来m个数,分别是这个节点的m个儿子的标号r1,r2,⋯,rmr1,r2,⋯,rm

对于一个n(0<n≤15000<n≤1500)个结点的树,结点标号在1到n之间,且标号不重复。保证经费总和不超过2^31-1

输出格式

输出文件仅包含一个数,为所求的最少的经费。

思路:dp[i,0..2]分别表示在i的某个儿子,i本身,i的父亲安置侍卫覆盖i的整个子树的最小花费

dp[u,0]=dp[v,1]+sigma(min(dp[v',0],dp[v',1]))   v<>v'

dp[u,1]=a[u]+sigma(min(dp[v,0],dp[v,1],dp[v,2]))

dp[u,2]=sigma(min(dp[v,0],dp[v,1]))

 var dp:array[..,..]of longint;
head,vet,next,a:array[..]of longint;
n,m,i,j,x,y,tot:longint; procedure add(a,b:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
head[a]:=tot;
end; function min(x,y:longint):longint;
begin
if x<y then exit(x);
exit(y);
end; procedure dfs(u,pre:longint);
var e,v,i,s,d:longint;
begin
e:=head[u]; dp[u,]:=maxlongint; dp[u,]:=a[u]; dp[u,]:=;
d:=; s:=;
while e<> do
begin
v:=vet[e];
if v<>pre then
begin
inc(d);
dfs(v,u);
s:=s+min(dp[v,],dp[v,]);
dp[u,]:=dp[u,]+min(min(dp[v,],dp[v,]),dp[v,]);
dp[u,]:=dp[u,]+min(dp[v,],dp[v,]);
end;
e:=next[e];
end;
if d= then begin dp[u,]:=maxlongint; dp[u,]:=a[u]; dp[u,]:=; exit; end;
e:=head[u];
while e<> do
begin
v:=vet[e];
if v<>pre then dp[u,]:=min(dp[u,],s-min(dp[v,],dp[v,])+dp[v,]);
e:=next[e];
end;
end; begin
//assign(input,'vijos1144.in'); reset(input);
// assign(output,'vijos1144.out'); rewrite(output);
readln(n);
for i:= to n do
begin
read(x); read(a[x]);
read(m);
for j:= to m do
begin
read(y); add(x,y); add(y,x);
end;
end;
fillchar(dp,sizeof(dp),$1f);
dfs(,-);
writeln(min(dp[,],dp[,])); //close(input);
//close(output);
end.

最新文章

  1. iOS - .a静态库的打包(包括打包的文件中用到了一些别人的三方库和分类的处理)
  2. linux下安装apache与php;Apache+PHP+MySQL配置攻略
  3. alpha值的问题
  4. 多个java文件编译并打成jar包经典方法
  5. 解决问题:centos虚拟机安装好nginx,本机无法访问
  6. 如何解决grails2.3.2中不能运行fork模式
  7. 客户视角:Oracle ETL工具ODI
  8. TensorFlow安装与测试
  9. Android studio中出现非法字符时的部分解决方法
  10. HTML全局属性
  11. Windows Phone开发(47):轻松调用Web Service
  12. 通过java反射得到javabean的属性名称和值参考
  13. js判断是否使用的是微信浏览器
  14. vue拦截器实现统一token,并兼容IE9验证
  15. 用premake5创建lua532工程
  16. bzoj 4565 状压区间dp
  17. github使用个人总结
  18. 挖掘两个Integer对象的swap的内幕
  19. Visual Studio 简单使用常识操作
  20. VB6学习笔记

热门文章

  1. js中替换字符串
  2. MySQL在windows上的安装步骤
  3. Python爬虫系列-Selenium+Chrome/PhantomJS爬取淘宝美食
  4. 10GNU C语言函数调用
  5. 【python】python安装和运行报错汇总
  6. classpath、WEB-INF
  7. LeetCode(5)Longest Palindromic Substring
  8. ARM CORTEX-M3的时钟
  9. luogu3203 [HNOI2010]弹飞绵羊
  10. ios开发讲解之anchorPoint和position详解