牛客小白月赛6 c 桃花
链接: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 桃花相关推荐
- 牛客小白月赛6 C.桃花
牛客小白月赛6 C.桃花 题目链接 题目描述 桃花一簇开无主,可爱深红映浅红.--<题百叶桃花> 桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花.HtBest ...
- 牛客小白月赛6 C 桃花
C 桃花 题目: 链接:https://www.nowcoder.com/acm/contest/136/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144 ...
- 牛客小白月赛6 - C.桃花(DFS/BFS)
桃花一簇开无主,可爱深红映浅红. --<题百叶桃花> 桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花.HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花 ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
- F.孤独(牛客小白月赛39)
F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛65个人题解A-E
1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...
- 牛客小白月赛24 J.建设道路
牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...
- 牛客小白月赛4 D.郊区春游
牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi 和 BiB_i ...
最新文章
- 简单介绍一下R中的几种统计分布及常用模型
- 设计模式之解释器模式、例子分析
- 2020上半年收集到的优质AI文章 – 自然语言处理
- Linux命令行–基本的bash shell命令
- K8S集群的搭建:环境准备及相关命令
- Java的新视差控件(JavaFX)
- # 定义四边形_【四边形系列专题】 特殊平行四边形之矩形
- .ps文件怎么打开_ps界面的认识及文件的打开
- 项目管理工具project软件学习(六) - 设置里程碑、任务备注
- VSCode Debug
- Git:使用 GitHub 托管代码的简单流程
- 16-微信小程序商城 购物车首页底部菜单(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
- mfc简易的学生管理系统
- python 入门篇 之 正则表达式re.findall的使用
- 【踩坑】RTX30系列显卡的CUDA配置
- dell 重装linux系统_预装Linux(Ubuntu)的DELL笔记本重装Windows
- 知乎关键词排名,知乎关键词排名置顶第一的方法
- C++笔记:二维数组行列互换
- php会员分级,php如何查找会员无限分类的所有上级和所有下级
- ap计算机课程的内容,AP系列七|解读AP计算机课程与考试