链接:https://www.nowcoder.com/acm/contest/136/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

桃花一簇开无主,可爱深红映浅红。

——《题百叶桃花》

桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花,由于HtBest法力有限,只能使用一次魔法棒,请求出Htbest最多可以摘到多少个桃花。

输入描述:

第一行有一个正整数n,表示桃树的节点个数。
接下来n-1行,第i行两个正整数ai,bi ,表示桃树上的节点ai,bi之间有一条边。

输出描述:

第一行一个整数,表示HtBest使用一次魔法棒最多可以摘到多少桃花。

示例1

输入

复制

3
1 2
2 3

输出

复制

3

示例2

输入

复制

3
1 2
1 3

输出

复制

3

示例3

输入

复制

4
1 2
2 3
3 4

输出

复制

4

备注:

对于100%的测试数据:
1 ≤ n ≤ 1000000
数据量较大,注意使用更快的输入输出方式。

大致思路:

很容易想到求树的直径,即从任意节点开始dfs一次,找到最长链的一个节点。然后从这个节点出发找到另一个节点。这两个节点的距离最长。(用链式前向星一次就能ac,用vector容易卡在95%,但吸氧能过)

ac代码:

# pragma GCC optimize (3) //吸氧
# include <iostream>
# include <cstring>
# include <vector>
# include <cstdio>
# include <algorithm>using namespace std;const int MAXN  = 1e6+10;vector <int > v[MAXN];
bool book[MAXN];
int L,res=0;//L为最长链的一个节点void dfs(int root,int cnt)
{if(v[root].size()==1&&cnt>res)//没什么用的减枝{res=cnt;L=root;}for(int i=0;i<v[root].size();i++){int nx=v[root][i];if(book[nx])continue;book[nx]=1;dfs(nx,cnt+1);}return ;
}int main()
{int n;cin>>n;for(int i=1;i<n;i++){int a,b;scanf("%d%d",&a,&b);v[a].push_back(b);v[b].push_back(a);}memset(book,0,sizeof book);book[1]=1;dfs(1,1);memset(book,0,sizeof book);book[L]=1;res=0;dfs(L,1);cout<<res<<endl;
}

牛客小白月赛6 c 桃花相关推荐

  1. 牛客小白月赛6 C.桃花

    牛客小白月赛6 C.桃花 题目链接 题目描述 桃花一簇开无主,可爱深红映浅红.--<题百叶桃花> 桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花.HtBest ...

  2. 牛客小白月赛6 C 桃花

    C 桃花 题目: 链接:https://www.nowcoder.com/acm/contest/136/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144 ...

  3. 牛客小白月赛6 - C.桃花(DFS/BFS)

    桃花一簇开无主,可爱深红映浅红. --<题百叶桃花> 桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花.HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花 ...

  4. 牛客小白月赛16 小石的签到题(博弈)

    牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...

  5. F.孤独(牛客小白月赛39)

    F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...

  6. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  7. 牛客小白月赛65个人题解A-E

    1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...

  8. 牛客小白月赛24 J.建设道路

    牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai​ ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...

  9. 牛客小白月赛4 D.郊区春游

    牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi​ 和 BiB_i ...

最新文章

  1. 简单介绍一下R中的几种统计分布及常用模型
  2. 设计模式之解释器模式、例子分析
  3. 2020上半年收集到的优质AI文章 – 自然语言处理
  4. Linux命令行–基本的bash shell命令
  5. K8S集群的搭建:环境准备及相关命令
  6. Java的新视差控件(JavaFX)
  7. # 定义四边形_【四边形系列专题】 特殊平行四边形之矩形
  8. .ps文件怎么打开_ps界面的认识及文件的打开
  9. 项目管理工具project软件学习(六) - 设置里程碑、任务备注
  10. VSCode Debug
  11. Git:使用 GitHub 托管代码的简单流程
  12. 16-微信小程序商城 购物车首页底部菜单(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  13. mfc简易的学生管理系统
  14. python 入门篇 之 正则表达式re.findall的使用
  15. 【踩坑】RTX30系列显卡的CUDA配置
  16. dell 重装linux系统_预装Linux(Ubuntu)的DELL笔记本重装Windows
  17. 知乎关键词排名,知乎关键词排名置顶第一的方法
  18. C++笔记:二维数组行列互换
  19. php会员分级,php如何查找会员无限分类的所有上级和所有下级
  20. ap计算机课程的内容,AP系列七|解读AP计算机课程与考试

热门文章

  1. Atom安装教程---图文详解
  2. 030 智能仓储机器人物料搬运如何更快?
  3. 接入丰桥,下单到打印面单到配送开发流程
  4. 交换机配置VLAN及Access接口
  5. 企业网站SEO优化自然排名基础教程 新手必备
  6. oracle 12c (内存列存储)IM column store
  7. c语言 数列累乘法,高中数学,掌握累乘法的特点,求数列的通项,很简单!
  8. 怎么启用计算机服务设置,如何打开系统服务
  9. asp+access
  10. linux脚本执行命令登录,Linux登录后自动执行脚本,系统基础信息一目了然