hdu 4714 树形DP
思路: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的更多相关文章
- hdu 4123 树形DP+RMQ
http://acm.hdu.edu.cn/showproblem.php? pid=4123 Problem Description Bob wants to hold a race to enco ...
- HDU 4714 Tree2cycle DP 2013杭电热身赛 1009
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 Tree2cycle Time Limit: 15000/8000 MS (Java/Other ...
- HDU 1520 树形dp裸题
1.HDU 1520 Anniversary party 2.总结:第一道树形dp,有点纠结 题意:公司聚会,员工与直接上司不能同时来,求最大权值和 #include<iostream> ...
- HDU 1561 树形DP入门
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU 2196树形DP(2个方向)
HDU 2196 [题目链接]HDU 2196 [题目类型]树形DP(2个方向) &题意: 题意是求树中每个点到所有叶子节点的距离的最大值是多少. &题解: 2次dfs,先把子树的最大 ...
- HDU 1520 树形DP入门
HDU 1520 [题目链接]HDU 1520 [题目类型]树形DP &题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知 ...
- codevs 1380/HDU 1520 树形dp
1380 没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 回到问题 题目描述 Description Ural大学有N个职员 ...
- HDU 5834 [树形dp]
/* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数 ...
- hdu 4267 树形DP
思路:先dfs一下,找出1,n间的路径长度和价值,回溯时将该路径长度和价值清零.那么对剩下的图就可以直接树形dp求解了. #include<iostream> #include<al ...
随机推荐
- CSS3- px、em、rem区别介绍
PX px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em ...
- chrome内核浏览器缓存资源找回方法
曾几何时,用chrome浏览器看了某个图片,网页,视频等,当时没保存,后来再怎么找都找不到了,chrome还把缓存加密了,不能像ie那样找回,这世上有买后悔药的吗?还真有! 搜索chromeCache ...
- HTML第三天学习笔记
昨天学的超链接,今天深入学习了下,发现了更多的知识点,而且关于初始新建网页时,由于是初学者,所以还是纯手写代码~ <html> <head> <title>超链接& ...
- cocos2d-x (Android)之-那些常见的error记
转自:http://blog.csdn.net/callchunli/article/details/8929813 (2013/9/2) build.xml:939: java.lang.Array ...
- Update-ServiceTemplate
1: Update a service by using conventional servicing. PS C:\> $Service = Get-SCService -Name " ...
- 手游产品经理初探(六)粗糙的logo会给产品致命一击
假设你的游戏产品从logo的设计開始就不注重细节的话,那么你的产品将不会走多远! 我们把图片放大看: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1 ...
- MySQL 127.0.0.1和localhost本质区别
登录方式: [root@10-4-14-168 ~]# mysql -uroot -p Enter password: 查看权限表 mysql> SELECT user,host,passwor ...
- 记一次Time-Wait导致的问题
去年(2014年)公司决定服务框架改用Finagle(后续文章详细介绍),but 公司业务系统大部分是C#写的,然后 finagle只提供了 scala/java 的Client 于是 只能自己动手丰 ...
- Codeforces Educational Codeforces Round 5 C. The Labyrinth 带权并查集
C. The Labyrinth 题目连接: http://www.codeforces.com/contest/616/problem/C Description You are given a r ...
- PHP apache2.2 mysql 的安装
1.安装准备 我的系统为win7 旗舰版 php:http://windows.php.net/downloads/releases/php-5.3.6-Win32-VC9-x86.zip mysql ...