思路:dp[i][0]表示第i个节点为根的子树变成以i为一头的长链最小的花费,dp[i][0]表示表示第i个节点为根的子树变成i不是头的长链最小花费。

那么动态方程也就不难想了,就是要分几个情况处理,细心就好。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define inf 10000000
#define Maxn 1100010
using namespace std;
int vi[Maxn],head[Maxn],ans,e,dp[Maxn][];
struct Edge{
int u,v,next,val;
}edge[Maxn*];
void init()
{
e=;
ans=;
memset(head,-,sizeof(head));
memset(dp,,sizeof(dp));
memset(vi,,sizeof(vi));
}
void add(int u,int v)
{
edge[e].u=u,edge[e].v=v,edge[e].next=head[u],head[u]=e++;
edge[e].v=u,edge[e].u=v,edge[e].next=head[v],head[v]=e++;
}
void dfs(int u)
{
int i,v;
vi[u]=;
int sum1=,num1=,sum2=,num2=,sz=;
for(i=head[u];i!=-;i=edge[i].next){
v=edge[i].v;
if(vi[v]) continue;
dfs(v);
if(dp[v][]<=dp[v][]){
sum1+=dp[v][];
num1++;
}else if(dp[v][]<=dp[v][]+){
sum2+=dp[v][];
num2++;
}else {
sum1+=dp[v][]+;
}
sz++;
}
//if(u==1) printf("%d %d %d %d\n",num1,sum1,num2,sum2);
if(sz==) return ;
if(sz==){
dp[u][]=sum1+sum2;
dp[u][]=inf;
return ;
}
if(num1>=){
dp[u][]+=sum1+sum2+num2+(num1-)*;
if(num1>=){
dp[u][]+=sum1+sum2+(num1-)*+num2;
}
else {
dp[u][]+=sum1+sum2+num2;
}
return ;
}
if(num2>=){
dp[u][]+=sum1+sum2+(num2-);
if(num2>=){
dp[u][]+=sum1+sum2+(num2-);
}
else dp[u][]+=sum1+sum2;
return ;
}
dp[u][]+=sum1+sum2;
dp[u][]+=sum1+sum2;
}
int main()
{
int t,n,i,j,u,v;
scanf("%d",&t);
while(t--){
init();
scanf("%d",&n);
for(i=;i<n;i++){
scanf("%d%d",&u,&v);
add(u,v);
}
dfs();
//for(i=1;i<=n;i++)
// printf("%d %d %d \n",i,dp[i][0],dp[i][1]);
printf("%d\n",min(dp[][],dp[][])+);
}
return ;
}

hdu 4714 树形DP的更多相关文章

  1. hdu 4123 树形DP+RMQ

    http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...

  2. HDU 4714 Tree2cycle DP 2013杭电热身赛 1009

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 Tree2cycle Time Limit: 15000/8000 MS (Java/Other ...

  3. HDU 1520 树形dp裸题

    1.HDU 1520  Anniversary party 2.总结:第一道树形dp,有点纠结 题意:公司聚会,员工与直接上司不能同时来,求最大权值和 #include<iostream> ...

  4. HDU 1561 树形DP入门

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  5. HDU 2196树形DP(2个方向)

    HDU 2196 [题目链接]HDU 2196 [题目类型]树形DP(2个方向) &题意: 题意是求树中每个点到所有叶子节点的距离的最大值是多少. &题解: 2次dfs,先把子树的最大 ...

  6. HDU 1520 树形DP入门

    HDU 1520 [题目链接]HDU 1520 [题目类型]树形DP &题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知 ...

  7. codevs 1380/HDU 1520 树形dp

    1380 没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 回到问题 题目描述 Description Ural大学有N个职员 ...

  8. HDU 5834 [树形dp]

    /* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数 ...

  9. hdu 4267 树形DP

    思路:先dfs一下,找出1,n间的路径长度和价值,回溯时将该路径长度和价值清零.那么对剩下的图就可以直接树形dp求解了. #include<iostream> #include<al ...

随机推荐

  1. [OAuth2 & OpenID] 1.OAuth2授权

    1 OAuth2解决什么问题的? 举个栗子先.小明在QQ空间积攒了多年的照片,想挑选一些照片来打印出来.然后小明在找到一家提供在线打印并且包邮的网站(我们叫它PP吧(Print Photo缩写

  2. ASP.net 服务器监控

    参考代码: 1,页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SMP ...

  3. C#制作艺术字

    相信 Word  中的 艺术字 功能大家都不陌生, 前面这个 "Word" 单词就是它所为. 今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一 ...

  4. Hadoop on Mac with IntelliJ IDEA - 8 单表关联NullPointerException

    简化陆喜恒. Hadoop实战(第2版)5.4单表关联的代码时遇到空指向异常,经分析是逻辑问题,在此做个记录. 环境:Mac OS X 10.9.5, IntelliJ IDEA 13.1.5, Ha ...

  5. IE下实现类似CSS3 text-shadow文字阴影的几种方法

    IE下实现类似CSS3 text-shadow文字阴影的几种方法 一.开始的擦边话 为了测试IE9浏览器,下午晃晃荡荡把系统换成window7的了.果然,正如网上所传言的一样,IE9浏览器确实不支持C ...

  6. Python 数据类型

    数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义 ...

  7. CSS3+Js制作的一款响应式导航条

    今天制作了一个响应式导航条,能够自动随着不同的屏幕分辨率或浏览器窗口大小的不同而改变导航条的样式,这里主要用到的就是CSS3的Media Query.具体可以查看浅谈响应式布局这篇文章,这里就不花费大 ...

  8. 2016 icpc-camp 之旅(一)

    啦啦啦,终于前往icpccamp啦! 嗯,该死的飞机居然晚点了! 诶,晚点居然还会发赔偿金! 飞机上没什么好说的,和萌神一起看了5集龙与虎,然后就到了. 讲道理,海南航空感觉一般. 我的座位前面有个平 ...

  9. Codeforces Round #336 (Div. 2) C. Chain Reaction set维护dp

    C. Chain Reaction 题目连接: http://www.codeforces.com/contest/608/problem/C Description There are n beac ...

  10. 深入剖析 HTML5

    作为新一代的 HTML 标准,HTML5 不仅强化了 Web 网页的表现性能,还追加了本地数据库等 Web 应用的功能.虽然 HTML5 标准仍处于完善之中.然而,大部分新版本的浏览器已经能够支持某些 ...