喵哈哈村的魔法源泉(3)-(树的直径)
来源:互联网 发布:知乎 匿名 赞 编辑:程序博客网 时间:2024/05/16 14:39
喵哈哈村的魔法源泉(3)
发布时间: 2017年5月9日 20:59 最后更新: 2017年5月9日 20:59 时间限制: 1000ms 内存限制: 128M
喵哈哈村有一个魔法源泉,里面有无穷无尽的力量。
但是前提是你能答出这样一个问题:
小T打算在城市C开设一家外送快餐店。送餐到某一个地点的时间与外卖店到该地点之间最短路径长度是成正比的,小T希望快餐店的地址选在离最远的顾客距离最近的地方。
快餐店的顾客分布在城市C的N个建筑中,这N个建筑通过恰好N-1条双向道路连接起来,不存在任何两条道路连接了相同的两个建筑。任意两个建筑之间至少存在一条由双向道路连接而成的路径。小T的快餐店可以开设在任一建筑中,也可以开设在任意一条道路的某个位置上(该位置与道路两端的建筑的距离不一定是整数)。
现给定城市C的地图(道路分布及其长度),请找出最佳的快餐店选址,输出其与最远的顾客之间的距离。
第一行包含一个整数N,表示城市C中的建筑和道路数目
接下来N-1行,每行3个整数,Ai,Bi,Li(1≤i≤N;Li>0),表示一条道路连接了建筑Ai与Bi,其长度为Li
满足:,n<=200000,Li<=10000
一个实数,四舍五入保留恰好一位小数,表示最佳快餐店选址距离最远用户的距离
复制
4 1 2 11 3 22 4 1
2.0
经分析知其最优点一定是直径的中点,所谓直径,就是这n个城市中的两个城市之间的最大距离
如何求最大距离?
首先从一个点开始dfs,找到一个最远的点,该点一定是直径的一个端点,则从这个端点再搜回去即可
其保存的距离便是直径
#include<vector>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;typedef long long ll;#define maxn 500005#define Mod 1000000007int n,ans,dp[maxn],m;struct node{int v,c;};vector<node>q[maxn];void dfs(int u,int p,int sum){int i;for(i=0;i<q[u].size();i++){node v=q[u][i];if(v.v==p)continue;dfs(v.v,u,sum+v.c);}if(sum>ans){m=u;ans=sum;}}int main(void){node a;int i,x,y,z;scanf("%d",&n);for(i=1;i<n;i++){scanf("%d%d%d",&x,&y,&z);a.v=y;a.c=z;q[x].push_back(a);a.v=x;q[y].push_back(a);}dfs(1,-1,0);dfs(m,-1,0);printf("%.1f\n",(double)ans/2);return 0;}
0 0
- 喵哈哈村的魔法源泉(3)-(树的直径)
- 【qscoj】喵哈哈村的魔法源泉(2)(快速加)
- 喵哈哈村的魔力源泉(4)-(单调队列优化)
- 喵哈哈村的种花魔法
- 【qscoj】喵哈哈村的嘟嘟熊魔法(3)
- 喵哈哈村的魔法考试 Round #1 (Div.2) C 喵哈哈村的魔法石(II) 背包dp
- 喵哈哈村的嘟嘟熊魔法(四)(set+对组)
- qscoj 28 喵哈哈村的嘟嘟熊魔法(4)(思维+前缀和)@
- 【qscoj】喵哈哈村的嘟嘟熊魔法(1)
- 【qscoj】喵哈哈村的嘟嘟熊魔法(2)
- 喵哈哈村的魔法考试 Round #2 (Div.2) B.喵哈哈村的种花魔法 线段树 区间更新 单点查询
- poj4607(树的直径)
- 树的直径(模板)
- 喵哈哈村的卢西奥(dfs)
- 喵哈哈村的魔法大师 【SCC+缩点+floyd求传递闭包+最大匹配+01 背包】
- ifrog 1130 喵哈哈村的魔法大师╳灬兲笙疯癫°月 缩点+最小路径覆盖+背包
- 一个linux狂人的语录(转载)--动力源泉
- 求树的直径(poj1383验证)
- PAT-A-1071. Speech Patterns (25)
- 蓝桥杯java第八届B组:取位数
- python pandas 怎么替换某列的一个值?
- ASCII 码对照表
- 李开复--生命是最严厉的导师
- 喵哈哈村的魔法源泉(3)-(树的直径)
- ACM:W: Super-increasing sequence
- APP自动化测试1--安卓自动化环境安装
- spring mvc的几种使用方式1
- Linux 下安装composer
- Ajax上传带有普通input和文件的表单Form
- Git的安装和使用
- 最大公约数和最小公倍数问题
- Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛