hiho 11 树的最长路径
2015-11-20 23:02
393 查看
问题描述
树中两个结点之间的最长距离, 距离指两个节点之间的边数。解决方法
首先选择一个点作为树的根节点,对于以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; }
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path
- HDU1241 Oil Deposits
- ZOJ Problem Set - 1711 解题报告
- ZOJ Problem Set - 2412解题报告
- ZOJ Problem Set - 1457 解题报告