HihoCoder-1050 【裸树的直径】
来源:互联网 发布:淘宝店铺怎么取消推广 编辑:程序博客网 时间:2024/06/05 20:14
题目地址
解释 :
求树的最长路(树的直径)
首先假设树的最长路的两个叶子节点为v1,v2,那么现有结论,从任意一点u出发走到的最远的点一定是(v1,v2)中的一点,然后
再从v1或者v2出发走到的最远点一定是v2或者v1。所以经过两次搜索就能找到最长路径.
相关证明
AC代码:
dfs 找节点
#include<cstdio>#include<vector>#include<cstring>#define CLR(x) memset(x,0,sizeof(x))using namespace std;const int maxn=1e5+5;int dep[maxn];int max_len,root,n;int vis[maxn];vector<int>ve[maxn];int dfs(int x,int len){ vis[x]=1; if(len >max_len) max_len=len,root=x; for(int i=0;i<ve[x].size();i++){ if(!vis[ve[x][i]]){ dfs(ve[x][i],len+1); } }}int main(){ scanf("%d",&n); for(int i=0;i<n-1;i++){ int u,v; scanf("%d%d",&u,&v); ve[u].push_back(v); ve[v].push_back(u); } max_len=0; CLR(vis); dfs(1,0); //找到叶子结点之一,也许是最远. CLR(vis); dfs(root,0); //以一个叶子结点开始搜素,则搜出来的长度一定是最长. printf("%d\n",max_len); //输出长度.}
阅读全文
0 0
- HihoCoder-1050 【裸树的直径】
- HihoCoder 1387 (树的直径)
- bzoj3124 [Sdoi2013]直径 树的直径
- 【树的直径】
- 树的直径
- 求树的直径
- 树的最长直径
- HDU4607 树的直径
- URAL1056(树的直径)
- 树的直径hdu3721
- 树的直径
- 树的直径
- 树的重心、直径
- 树的直径
- 树的直径 【总结】
- poj1985 树的直径
- 树的直径
- 树的直径
- Java+Selenium3方法篇19-获取浏览器窗体的句柄
- Effective Java-嵌套类(内部类)
- 二叉排序树实现符号表
- Web前端-HeadFirst-笔记-图片-height width
- Python3.5 第三方库安装总结
- HihoCoder-1050 【裸树的直径】
- C++拷贝控制
- CentOS 7虚拟机安装Oracle11g详解
- 选数
- 以太网原理 最大帧长 最小帧长
- C++学习:虚函数,纯虚函数(virtual),虚继承,虚析构函数
- 计算机启动过程
- Lintcode76 Longest Increasing Subsequence solution 题解
- 欢迎使用CSDN-markdown编辑器