蓝桥杯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]. ...
随机推荐
- video codec 学习笔记
一. H.264 (http://www.baike.com/wiki/H264) 三大标准: AVC(Advanced Video Coding,AVC) H.264,同时也是MPEG-4第十部分 ...
- leetcode 890. Possible Bipartition
Given a set of N people (numbered 1, 2, ..., N), we would like to split everyone into two groups of ...
- Excel图表转成图片
关于excel 图表转成图片 知识点:excel 生成的图表不是图片 尝试. 通过Java调用POI接口挺难把excel生成的图表转成图片导出来 ps. 其它生成图表的工具,如jfre ...
- JS如何定义方法及调用 精选
简单搜索了下,遇到点问题1,经常在JS中看到如var foo = function(){}的形式foo是方法名还是对象名,如果想调用此方法,是用foo(),foo.function(),还是该如何正确 ...
- ubuntu上swift开发学习2
使用包管理器(package manager)创建一个可执行的项目 1. 创建一个Hello目录,然后进入目录 $ mkdir Hello $ cd Hello 2. 使用包初始化命令,参数表示创建一 ...
- listen and translation exercise 52
Two years ago my husband bought me a bicycle. Twenty of the thirty-five years I ran my own business. ...
- darknet YOLO 编译使用GPU
Darknet在GPU上运行可以得到500倍的提速,编译使用GPU要求显卡是Nvidia卡并且正确安装了CUDA. GPU环境下的编译配置都是在 /darknet/Makefile 文件中定义的,GP ...
- P4311 士兵占领[最大流]
题目地址 有一个$M * N$的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵.我们称这些士兵占领了整个棋盘当满足第i行至少放置了$L_ ...
- TTY,Console以及Terminal
TTY可以理解是一种终端显示.可以在/dev文件夹看到多个tty开头的文件,可以通过alt+Fn(n=1~6)来进行切换.这个是不是和GUI场景下的多个Terminal窗口是一致的呢? 伪TTY是指一 ...
- Ubuntu 重启命令
重启命令: 1.直接reboot 2.shutdown -r now 这两种都是立刻重启 3.shutdown -r 大概30秒后会重启 关机命令:1.halt 立刻关机2.poweroff 立刻 ...