2196专题

HDU 2196 Computer 树形DP+dfs预处理

题意:一个有向图,问从每一个点出发可以到达的最远距离。 想法:一个点有出去的边和指向他的边,那么这个点可到达的最远距离要么就是指向他的一条路径,要么就是从他出发的一条路径,我们可以通过dfs搜索点,然后在回溯的过程中找到最长的路径,那么下面就剩下怎么确定只想他的最长的一条路径,如果得到了比较两者大小即可得到正确答案。 现在假设两个点u,v其中u到v有一条边,那么可以知道从u出发的所有路径

Computer (HDU - 2196,树形 DP - 二次扫描与换根法)

一.题目链接: HDU-2196 二.题目大意: 给一颗无根树,求每个节点所能到达节点的最大距离. 三.分析: 感觉换根好难搞啊,想不清该维护哪些量,额我好笨啊... 附一个大佬讲解,看完就懂了~ 还是要多做一些换根dp呀 (ง •̀_•́)ง 四.代码实现: #include <bits/stdc++.h>using namespace std;const int M = (

HDU 2196 Computer(树形dp经典)

本文出自   http://blog.csdn.net/shuangde800 题目传送门 题意: 给出一棵树,求离每个节点最远的点的距离 思路: 把无根树转化成有根树分析, 对于上面那棵树,要求距结点2的最长距离,那么,就需要知道以2为顶点的子树(蓝色圈起的部分,我们叫它Tree(2)),距顶点2的最远距离L1 还有知道2的父节点1为根节点