hiho 11 树的最长路径

原创 2015年11月20日 23:02:16

问题描述

树中两个结点之间的最长距离, 距离指两个节点之间的边数。

解决方法

首先选择一个点作为树的根节点,对于以t为根的子树,L1和L2表示从t到叶子节点的最长距离和次长距离,那么子树对应的结果是 L1+L2;
树在存储时,可以按照无向边存储,在dfs访问时,传入父节点的指针,遍历时,如果是父节点就跳过。

#include <vector>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
enum{maxn = 100000+5};
vector<int> tree[maxn];
int res = -1;
int findMax(int t, int pre)
{
    int first = -1, sec = -1;
    for (int i=0; i< tree[t].size(); i++)
    {
        if (tree[t][i] != pre)
        {
            sec = max(sec, findMax(tree[t][i], t));
            if (first < sec)
                swap(first, sec);
        }
    }
    res = max(res, first+sec+2);
    return first +1;
}


#define OJ
int main()
{
    #ifndef OJ
    freopen("in.txt", "r", stdin);
    #endif // OJ
    int n;
    scanf("%d", &n);
    for (int i=0; i< n-1; i++)
    {
        int a, b;
        scanf("%d %d", &a, &b);
        tree[a].push_back(b);
        tree[b].push_back(a);
    }
    findMax(1, 0);
    printf("%d\n", res);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

最长回文子串 - hiho一下

最长回文子串的O(n)算法,Manacher算法。核心点在于,利用已经计算的回文子串长度信息,计算当前位置最长回文子串的长度。...

hiho 第一周 最长回文子串

如题:http://hihocoder.com/contest/hiho1/problem/1 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述   ...

hiho 1 最长回文子串

最长回文子串问题描述:一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦~ ...

hiho一下第一周:最长回文子串

小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。    这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典...

HiHo #1032 : 最长回文子串 【Manacher算法】

#1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述    小Hi和小Ho是一对好朋友,出生在信息化...

hiho第一周——最长回文子串

hiho第一周——最长回文子串题目链接:http://hihocoder.com/contest/hiho1/problem/1 资料来源于网络:http://www.felix021.com/bl...

树的直径(图中最长路)——hiho 1050

题目链接: https://hihocoder.com/problemset/problem/1050 分析: 给出一棵树,求出这棵树的直径(即最长的路)。 PS:每两个点之间只有一条边。 题解:...
  • FeBr2
  • FeBr2
  • 2016年10月07日 14:12
  • 450

编程之美hiho一下求最长回文串的长度

#1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述    小Hi和小Ho是一对好朋友,出生在信息化社会的他们对...

【hiho一下】第一周 最长回文子串

hiho一下第一周 最长回文子串 题目1:最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 题目原文:http://hihocoder.com/contest/hiho...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hiho 11 树的最长路径
举报原因:
原因补充:

(最多只允许输入30个字)