蓝桥杯T32(树的直径)
题目链接:http://lx.lanqiao.cn/problem.page?gpid=T32
题意:中文题诶~
思路:显然给出的地图是一颗树,若能求得树的直径 ans,则答案为:ans*(ans+1)/2 + 10*ans;
对于树的直径:若已知根节点root,则 ans 为 root 高度最大的两颗子树高度和,显然我们可以先dfs一遍找到 root 最高的子树并确定离 root 最远的那个节点 v ;
然后再以 v 为根节点,显然 v 只有一颗子树,那么这颗子树的高度即为此树的直径.只需从 v 出发再dfs一遍即可 ;
所以对于求树的直径我们可以先以任意一点为出发点dfs出距离此节点最远的节点v,再从v出发dfs一遍距离v最远的点,此时求出的距离即为直径;
代码:
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std; vector<pair<int,int> >tree[];
bool vis[];
int end_root,Max_len; void dfs(int x,int len){
vis[x]=true;
if(len>Max_len) Max_len=len,end_root=x;
for(int i=;i<tree[x].size();i++){
if(!vis[tree[x][i].first]){
dfs(tree[x][i].first,len+tree[x][i].second);
}
}
} int main(void){
int n;
while(~scanf("%d",&n)){
int max_val=;
memset(tree,,sizeof(tree));
for(int i=;i<n;i++){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
tree[a].push_back({b,c});
tree[b].push_back({a,c});
}
Max_len=;
memset(vis,,sizeof(vis));
dfs(,);
memset(vis,,sizeof(vis));
dfs(end_root,);
long long ans=Max_len;
printf("%lld\n",ans*(+ans)/+*ans);
}
}
蓝桥杯T32(树的直径)的更多相关文章
- BASIC-28_蓝桥杯_Huffuman树
题目: 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下 ...
- Java实现蓝桥杯模拟树的叶结点数量
问题描述 一棵包含有2019个结点的树,最多包含多少个叶结点? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. ...
- 2013蓝桥杯JavaA组T10 大臣的旅费(树的直径)
大臣的旅费 时间限制:1.0s 内存限制:256.0MB 问题描述 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大 ...
- 转 蓝桥杯 历届试题 大臣的旅费 [ dfs 树的直径 ]
题解: 求树的直径. 转一篇博客:http://www.cnblogs.com/hanyulcf/archive/2010/10/23/tree_radius.html 树的直径是指树的最长简单路.求 ...
- Java实现 蓝桥杯VIP 基础练习 Huffuman树
基础练习 Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Hu ...
- 蓝桥杯 大臣的旅费_树的最长度_两次DFS
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> ...
- 蓝桥杯之大臣的旅费(两次dfs)
Description 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个 ...
- 记2014“蓝桥杯全国软件大赛"决赛北京之行
5月29,30日 最终到了这一天.晚上有数据结构课,10点多的火车,我们就没有去上课,下午在宿舍里收拾东西,晚上8点左右从南校出发,9点半多到达火车站和老师学长学姐们会和. 第一次去北京,第一次买的卧 ...
- 第六届蓝桥杯软件类省赛题解C++/Java
第六届蓝桥杯软件类省赛题解C++/Java 1[C++].统计不含4的数字统计10000至99999中,不包含4的数值个数.答:暴力循环范围内所有数字判断一下就是了,答案是52488 1[Java]. ...
随机推荐
- Spring Boot2.0之Admin-UI分布式微服务监控中心
前面https://www.cnblogs.com/toov5/p/9823353.html 说的很不好用哈哈 还需要json格式化 我们可以用Admin-UI 比较爽歪歪 原理: 将所有服务的监控 ...
- 51nod 1610
题目 神犇题解 所以说鄙人的姿势水平完全不够啊OTZ. 很naive的想法是O(T*v*m)的,据说卡一卡可以过去.题目要求的东西其实是这个: $ \sum\limits_{i = 1}^v {\mu ...
- PYTHON 爬虫笔记七:Selenium库基础用法
知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...
- Linux-DHCP服务器的搭建
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理.分配IP地址,使网络环境中的主机动态的获得I ...
- ffmpeg截取视频
ffmpeg -i ./suen071520.mp4 -vcodec copy -acodec copy -ss 00:55:00 -to 01:14:50 ./suen071520sp3.mp4-- ...
- linux应用之开机自启动方法总结
1.把启动程序的命令添加到/etc/rc.d/rc.local文件中 CentOS系统下管理开机自启动的配置文件是/etc/rc.d/rc.local,所以只需编辑这个文件,在里面加入相应的启动命令即 ...
- ZOJ 1141 Closest Common Ancestors(LCA)
注意:poj上的数据与zoj不同,第二处输入没有逗号 ' , ' 题意:输出测试用例中是最近公共祖先的节点,以及这个节点作为最近公共祖先的次数. 思路:直接求,两个节点一直往上爬,知道爬到同一个节点, ...
- L95
The children squealed with delight when they saw the puppy.The signal will be converted into digital ...
- str_2.判断两个字符串是否互为旋转词
1. 字符串str的前面任意部分挪到后面形成的字符串叫做字符串str的旋转词 $str1 = "2ab1"; $str2 = "ab12"; $ret = is ...
- codeforces 660C C. Hard Process(二分)
题目链接: C. Hard Process time limit per test 1 second memory limit per test 256 megabytes input standar ...