题目链接: https://hihocoder.com/contest/hiho11/problem/1

求树中节点对 距离最远的长度

#include <bits/stdc++.h>
using namespace std; const int N = 1e5 + ;
int n;
vector<int> G[N];
int d[N];
void dfs(int u, int fa)
{
for(int i=; i<G[u].size(); i++) {
int v = G[u][i];
if(v != fa) {
d[v] = d[u] + ;
dfs(v, u);
}
}
} int main()
{
freopen("in.txt", "r", stdin);
scanf("%d",&n);
for(int i=; i<n-; i++) {
int a,b; scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
d[] = ;
dfs(, );
int mx = ;
int index = -;
for(int i=; i<=n; i++) {
if(mx < d[i]) {
mx = d[i];
index = i;
}
}
//printf("%d\n", mx);
memset(d,,sizeof(d));
dfs(index, );
for(int i=; i<=n; i++) {
if(mx < d[i]) {
mx = d[i];
index = i;
}
}
cout << mx <<endl;
return ;
}
#include <bits/stdc++.h>
using namespace std; const int N = 1e5 + ;
vector<int> G[N];
int n, ans; int dfs(int u,int fa)
{
int l1=-,l2=-;
for(int i=; i<G[u].size(); i++) {
int v = G[u][i];
if(v == fa) continue;
int l = dfs(v, u);
if(l > l1)
l2=l1 , l1=l;
else
l2 = max(l2, l); }
//cout << u <<" "<< l1 <<" "<< l2 <<endl;
ans = max(ans , l1 + l2 + );
// cout << u <<" 最长的路为" <<l1 <<endl;
return l1+;
} int main()
{
//freopen("in.txt", "r", stdin);
cin >> n;
for(int i=; i<n; i++) {
int a,b; scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
ans = ;
dfs(,);
cout << ans <<endl;
return ;
}

hihoCoder week11 树中的最长路的更多相关文章

  1. hihocoder 1050 树中的最长路(动态规划,dfs搜索)

    hihocoder 1050 树中的最长路(动态规划,dfs搜索) Description 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅 ...

  2. hihocoder#1050 : 树中的最长路(树中最长路算法 两次BFS找根节点求最长+BFS标记路径长度+bfs不容易超时,用dfs做TLE了)

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  3. hihoCoder 1050 树中的最长路 最详细的解题报告

    题目来源:树中的最长路 解题思路:枚举每一个点作为转折点t,求出以t为根节点的子树中的‘最长路’以及与‘最长路’不重合的‘次长路’,用这两条路的长度之和去更新答案,最终的答案就是这棵树的最长路长度.只 ...

  4. 题解报告:hihoCoder #1050 : 树中的最长路

    描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但 ...

  5. hihoCoder #1050 : 树中的最长路

    题意: 求出树上最长路径的长度,并返回. 思路: 刚看到数据<=10^5,假如是单分支的树,那么有5万层,就不能递归,那就用桟实现, 那就要将长度信息保存在另开的数组中,很麻烦!!这题专门给递归 ...

  6. HihoCoder第十一周:树中的最长路

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  7. hiho #1050 : 树中的最长路 树的直径

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  8. [HIHO] 1050 树中的最长路

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  9. HihoCoder1050 树中的最长路 树形DP第三题(找不到对象)

    题意:求出的树中距离最远的两个结点之间相隔的距离. 水题一道,以前只会用路的直径来解. 代码如下: #include<cstdio> #include<cstdlib> #in ...

随机推荐

  1. [4]Windows内核情景分析---内核对象

    写过Windows应用程序的朋友都常常听说"内核对象"."句柄"等术语却无从得知他们的内核实现到底是怎样的, 本篇文章就揭开这些技术的神秘面纱. 常见的内核对象 ...

  2. c++ 各种类型转换

    1.int 2 string 法1:c++11里面的to_string #include <string> std::); //or auto s = std::to_string(); ...

  3. 转自大神的KM想法

    我第一次理解KM算法看到大神的讲解不胜感激这km挺神奇的接下来就见识一下这个大牛的吧 转自 http://blog.csdn.net/wuxinxiaohuangdou/article/details ...

  4. GO富集分析

    GO的主要用途之一是对基因组进行富集分析.例如,给定一组在特定条件下上调的基因,富集分析将使用该基因组的注释发现哪些GO术语被过度表示(或未充分表示). 富集分析工具    用户可以直接从GOC网站的 ...

  5. OBO文件格式1.2

    该文件每一行都是一个键值对,基本格式为:    键: 值!注释 总体结构:    文件头    !包含若干行总体说明    词条1    ![词条类型]占第一行,后跟若干行说明    词条2    ! ...

  6. linux常用命令:more 命令

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  7. GUI编程实例

    function varargout = GUI013(varargin) % GUI013 MATLAB code for GUI013.fig % GUI013, by itself, creat ...

  8. [转载]ORA-01502错误成因和解决方法

    检查一下索引状态,我们会注意到索引已经是“UNUSABLE”了.SQL> select index_name,index_type,tablespace_name,table_type,stat ...

  9. Step6:SQL Server 数据变更时间戳(timestamp)在复制中的运用

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 方案(Solution) 方案一(Solution One) 方案二(Solution Two ...

  10. python里面的xlrd模块

    ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 今天就先来说一下xlrd模块: 一.安装xlrd模块 ♦ 到python官网下载 ...