牛客小白月赛6 C 桃花 dfs 求树上最长直径
链接:https://www.nowcoder.com/acm/contest/136/C
来源:牛客网
题目描述
桃花一簇开无主,可爱深红映浅红。
桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花,由于HtBest法力有限,只能使用一次魔法棒,请求出Htbest最多可以摘到多少个桃花。
输入描述:
- 第一行有一个正整数n,表示桃树的节点个数。
接下来n-1行,第i行两个正整数a
i
- ,b
i
- ,表示桃树上的节点a
i
- ,b
i
- 之间有一条边。
输出描述:
- 第一行一个整数,表示HtBest使用一次魔法棒最多可以摘到多少桃花。
输入例子:
- 3
- 1 2
- 2 3
输出例子:
- 3
-->
备注:
- 对于100%的测试数据:
1 ≤ n ≤ 1000000
数据量较大,注意使用更快的输入输出方式。- 分析:
求树上最长子链(最长直径)
记录树上任意一结点到子树最远结点的最长距离和到父结点的最长距离
类似hdu2196
https://blog.csdn.net/qq_37493070/article/details/81285249
AC代码:
- #include <map>
- #include <set>
- #include <stack>
- #include <cmath>
- #include <queue>
- #include <cstdio>
- #include <vector>
- #include <string>
- #include <bitset>
- #include <cstring>
- #include <iomanip>
- #include <iostream>
- #include <algorithm>
- #define ls (r<<1)
- #define rs (r<<1|1)
- #define debug(a) cout << #a << " " << a << endl
- using namespace std;
- typedef long long ll;
- const ll maxn = 1e6+10;
- const ll mod = 1e9+7;
- const double pi = acos(-1.0);
- const double eps = 1e-8;
- vector<ll> e[maxn];
- ll ans[maxn], cnt[maxn], n;
- void dfs( ll x, ll fa ) {
- ans[x] = cnt[x] = 1;
- for( ll v : e[x] ) {
- if( v == fa ) {
- continue;
- }
- dfs( v, x );
- ans[x] = max( ans[x], max( ans[v], cnt[x]+cnt[v] ) ); //子树最长
- cnt[x] = max( cnt[x], cnt[v]+1 ); //结点到父结点最长
- }
- }
- int main() {
- ios::sync_with_stdio(0);
- cin >> n;
- for( ll i = 0, x, y; i < n-1; i ++ ) {
- cin >> x >> y;
- e[x].push_back(y), e[y].push_back(x);
- }
- dfs(1,0);
- cout << ans[1] << endl;
- return 0;
- }
牛客小白月赛6 C 桃花 dfs 求树上最长直径的更多相关文章
- 牛客小白月赛6C-桃花(DFS/BFS求树的直径)
链接:https://www.nowcoder.com/acm/contest/136/C 来源:牛客网 桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言 ...
- 牛客小白月赛12 H(dfs序+线段树),F(分块思想+bit),J(二分)
H 华华和月月种树 链接:https://ac.nowcoder.com/acm/contest/392/H 思路:先得到整棵树最终的形态,在这棵树上进行三种操作,用dfs跑下,第二种操作就直接对最终 ...
- 牛客小白月赛12 I (tarjan求割边)
题目链接:https://ac.nowcoder.com/acm/contest/392/I 题目大意:一个含有n个顶点m条边的图,求经过所有顶点必须要经过的边数. 例: 输入: 5 51 22 33 ...
- 牛客小白月赛5-I-区间(差分求前缀和+一次暴力统计)
题目描述 Apojacsleam喜欢数组. 他现在有一个n个元素的数组a,而他要对a[L]-a[R]进行M次操作: 操作一:将a[L]-a[R]内的元素都加上P 操作二:将a[L]-a[R]内的元素都 ...
- 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花
求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- 牛客小白月赛8 - E - 诡异数字 数位DP
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...
- 牛客小白月赛18 Forsaken给学生分组
牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 Forsaken有 ...
- 牛客小白月赛18 Forsaken喜欢数论
牛客小白月赛18 Forsaken喜欢数论 题目传送门直接点标题 Forsaken有一个有趣的数论函数.对于任意一个数xxx,f(x)f(x)f(x)会返回xxx的最小质因子.如果这个数没有最小质 ...
随机推荐
- 用 PYQT5 和 QT Dseingner 写的串口助手
最近公司做项目需要写串口助手,于是从网上找教程着手写了一下,基本的功能可以实现了,但是想要一个表盘的功能一直没有找到教程,有些遗憾.大神们会的话给指导指导 谢谢啦 ! 下边有源码的连接,欢迎大家下载 ...
- Unittest 支持 case 失败后自动截图功能的另外两种方式
原生的unittest框架是不支持case失败后自动截图的功能的,网上看了大家的解决办法,大体上分为两种:1.要么加装饰器2.也有人封装断言这里我们看看还有没有其他的更加方便的方法值得大家一起探讨一下 ...
- extjs4 表单验证自定义
extjs4 在验证上面支持的也特别好,他可以使用自带的格式验证,也可以自定义验证 比如:正则验证,密码重复填写对比验证,以及 调用后台方法验证,下面将验证方法统一写出以供参考 function lo ...
- vue中的虚拟DOM树
什么是虚拟DOM树?(Virtual DOM) 虚拟DOM树其实就是一个普通的js对象,它是用来描述一段HTML片段的 01 当页面渲染的时候Vue会创建一颗虚拟DOM树 02 ...
- 浅谈osi模型 三次握手 四次挥手 ddos攻击原理
C/S B/S 架构 C:client 端 B:browser 浏览器 S:server 端 C/S架构,基于客户端与服务端之间的通信 例如:QQ,抖音,快手,微信,支付宝等等 优点:个性化设置,响应 ...
- ES 27 - Elasticsearch脚本的使用实践
目录 1 关于脚本 2 脚本使用的最佳实践 2.1 创建脚本并存储 2.2 脚本的缓存 2.3 Script Field - 脚本字段 本文以 ES 6.6.0 版本为例进行演示. 1 关于脚本 ES ...
- Keras载入mnist数据集出错问题解决方案
找到本地keras目录下的mnist.py文件 通常在这个目录下. ..\Anaconda3\Lib\site-packages\keras\datasets 下载mnist.npz文件到本地 下载链 ...
- windows 下 ctags 安装以及 tags 目录创建
最近处理 .as 格式代码,需要转换成 c# 格式, 用 VS 查看,无法跳转,十分蛋疼,又用起了好久没用的 VIM,配置 tags 文件,实现自动跳转. 1.下载ctag文件http://ctags ...
- python小白手册之远程链接转换
访问顺序补充
- idea 打包失败心得一