题目描述

经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统,里面有N-1条路,每条路连接了一对编号为C1和C2的奶牛(1 <= C1 <= N; 1 <= C2 <= N; C1<>C2).这样,在每一对奶牛之间都有一条唯一的通路. FJ希望贝茜尽快的回到农场.于是,他就指示贝茜,如果对于一条路直接相连的两个奶牛,贝茜只能拜访其中的一个.当然,贝茜希望她的假期越长越好,所以她想知道她可以拜访的奶牛的最大数目.

输入

第1行:单独的一个整数N

第2..N行:每一行两个整数,代表了一条路的C1和C2.

输出

单独的一个整数,代表了贝茜可以拜访的奶牛的最大数目.

样例输入

7

6 2

3 4

2 3

1 2

7 6

5 6

样例输出

4


题解

裸的树形dp。

f[x]代表拜访x时最大数量,g[x]代表不拜访x时最大数量。

那么易推得f[x]=1+∑g[to[i]],g[x]=∑max(f[to[i]],g[to[i]])。

答案即为max(f[1],g[1])。

#include <stdio.h>
#include <string.h>
int to[100001] , next[100001] , head[50001] , f[50001] , g[50001] , cnt;
int max(int a , int b)
{return a > b ? a : b;
}
void add(int x , int y)
{to[cnt] = y;next[cnt] = head[x];head[x] = cnt ++ ;
}
void dp(int x , int last)
{int i , y;f[x] = 1;for(i = head[x] ; i != -1 ; i = next[i]){y = to[i];if(y == last)continue;dp(y , x);f[x] += g[y];g[x] += max(f[y] , g[y]);}
}
int main()
{int n , i , x , y;scanf("%d" , &n);memset(head , -1 , sizeof(head));for(i = 1 ; i <= n - 1 ; i ++ ){scanf("%d%d" , &x , &y);add(x , y);add(y , x);}dp(1 , 0);printf("%d\n" , max(f[1] , g[1]));return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/6171312.html

【bzoj2060】[Usaco2010 Nov]Visiting Cows拜访奶牛 树形dp相关推荐

  1. bzoj2060[USACO2010,Nov]Visiting Cows拜访奶牛

    题目链接:bzoj上是权限题~ 题目大意: 题解: 树型DP f[i][0]表示不选i,f[i][1]表示选i.(因为很水..就不详写了) 可列出方程: f[i][0]=sigama(max(f[y] ...

  2. [Usaco2010 Nov]Visiting Cows

    题目描述 经过了几周的辛苦工作,贝茜终于迎来了一个假期.作为奶牛群中最会社交的牛,她希望去拜访N(1<=N<=50000)个朋友.这些朋友被标号为1..N.这些奶牛有一个不同寻常的交通系统 ...

  3. bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料*

    bzoj2059[Usaco2010 Nov]Buying Feed 购买饲料 题意: 约翰开车来到镇上,他要带K吨饲料回家.如果他的车上有X吨饲料,每公里就要花费X^2元,开车D公里就需要D* X^ ...

  4. 【POJ - 1947】Rebuilding Roads (树形dp,背包问题,树形背包dp)

    题干: The cows have reconstructed Farmer John's farm, with its N barns (1 <= N <= 150, number 1. ...

  5. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  6. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  7. [树形dp] Jzoj P5233 概率博弈

    Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...

  8. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  9. BZOJ 1040 ZJOI2008 骑士 树形DP

    题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...

最新文章

  1. 关于Nginx的使用
  2. 看完这篇文章之后,终于明白了编译到底怎么回事
  3. Python实现控制台清屏
  4. 深入理解nodejs中的异步编程
  5. 【转】DB2 常用命令
  6. PID是什么?在做系统的故障排除时如何使用它?
  7. 五分钟让你的数据动起来,动态数据可视化极简教程
  8. abaqus推荐用哪一版本的_微信拍一拍怎么用? 微信拍一拍功能在哪怎么拍别人...
  9. 表达式必须是常量表达式
  10. 二叉树的镜像(C++)
  11. 信息系统项目管理---第九章 项目人力资源管理
  12. php+实现群发微信模板消息_php实现微信模板消息推送
  13. 20145201 《信息安全系统设计基础》期中总结
  14. 俄亥俄州立大学计算机专业排名,俄亥俄州立大学哥伦布分校计算机科学专业排名第30(2020年USNEWS美国排名)...
  15. Python爬虫爬取LOL所有英雄皮肤
  16. 北京市金融工作局:大数据重塑未来金融监管方式
  17. 最近很火的ChatGPT和GPT4
  18. 接口测试(二)接口测试用例设计
  19. 和利时scada系统服务器参数,MACS-SCADA综合监控系统
  20. 第十章Tensorflow图像处理

热门文章

  1. 还是畅通工程1233
  2. 五角数 Exercise06_01
  3. 设计模式 - 策略模式Strategy
  4. 浙大1002Fire Net心得
  5. Qt 模态对话框不模态的问题
  6. 【总结】C# 线程同步技术(一)之 Join 方法
  7. 《Docker:容器与容器云》.pdf
  8. Array.forEach
  9. 关于js中正则表达式链接
  10. MySQL_存储过程