传送门

80分

$ Floyd $ 树的直径可以通过枚举求出。直径的两个端点$ maxi,maxj $ ,由此可知对于一个点 $ k $ ,如果满足 $ d[maxi][k]+d[k][maxj]==d[maxi][maxj] $ 那么 $ k $ 点一定在直径上。分别枚举位于直径上的起点 $ s $ 与终点 $ t $ 。 $ ecg $ 定义为 $ max{d(v,F)} $ 那么枚举出的线段的 $ ecg $ 一定为:

$ max{min{d[maxi][s],d[maxi][t]},min{d[maxj][s],d[maxj][t]}} $

因为 $ maxi $ 与 $ maxj $ 到线段的距离的最大值 一定是最大的否则 $ maxi-maxj $ 就不是直径。

比较得最小 $ ecg $ 即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std ;
#define re register
const int maxn = 1005 ; inline int read () {
int f = 1 , x = 0 ;
char ch = getchar () ;
while(ch > '9' || ch < '0') {if(ch == '-') f = -1 ; ch = getchar () ;}
while(ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + ch - '0' ; ch = getchar () ;}
return x * f ;
} int n , s , x , y , z ;
int dis[305][305] , ans = 1e9 ; int main () {
n = read () ; s = read () ;
for(re int i = 1 ; i <= n ; ++ i)
for(re int j = 1 ; j <= n ; ++ j)
if(i != j) dis[i][j] = dis[j][i] = 1e9 ;
for(re int i = 1 ; i < n ; ++ i) {
x = read () ; y = read () ; z = read () ;
dis[x][y] = dis[y][x] = z ;
}
for(re int k = 1 ; k <= n ; ++ k)
for(re int i = 1 ; i <= n ; ++ i)
for(re int j = 1 ; j <= n ; ++ j) {
if(dis[i][j] > dis[i][k] + dis[k][j])
dis[i][j] = dis[i][k] + dis[k][j] ;
}
int maxx = 0 , maxi , maxj ;
for(re int i = 1 ; i <= n ; ++ i)
for(re int j = 1 ; j <= n ; ++ j)
if(dis[i][j] < 1e9 && dis[i][j] > maxx) {
maxx = dis[i][j] ;
maxi = i ;
maxj = j ;
}
for(re int i = 1 ; i <= n ; ++ i)
if(dis[maxi][i] + dis[maxj][i] == dis[maxi][maxj]) {
for(re int j = 1 ; j <= n ; ++ j)
if(dis[maxi][j] + dis[maxj][j] == dis[maxi][maxj]) {
if(dis[i][j] > s) continue ;
int ecg ;
ecg = max(min(dis[i][maxi] , dis[j][maxi]) , min(dis[maxj][i] , dis[maxj][j])) ;
ans = min(ans , ecg) ;
}
}
printf("%d\n" , ans) ;
return 0 ;
}

洛谷P1099 树网的核的更多相关文章

  1. 洛谷 P1099 树网的核

    P1099 树网的核 题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W ...

  2. [NOIP2007] 提高组 洛谷P1099 树网的核

    题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...

  3. 2018.11.06 洛谷P1099 树网的核(最短路+枚举)

    传送门 之前看李煜东的书一直感觉是道神题. 然后发现这题数据范围只有300?300?300? 直接上floydfloydfloyd然后暴力就完了啊. 代码: #include<bits/stdc ...

  4. 洛谷 P1099 树网的核+P2491 [SDOI2011]消防

    写在前面:由于是双倍经验就放一块了,虽然数据范围差的有点大. 题目链接 题意:在树的直径上选择一条长度不超过s的路径使这条路径上的点到树上任意点的最大距离最小. 这题数据好像非常水,我写了上界n^2不 ...

  5. BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防

    一道树的直径 树网的核 BZOJ原题链接 树网的核 洛谷原题链接 消防 BZOJ原题链接 消防 洛谷原题链接 一份代码四倍经验,爽 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍 ...

  6. bzoj1999 (洛谷1099) 树网的核——dfs

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1999  https://www.luogu.org/problemnew/show/P109 ...

  7. bzoj1999 / P1099 树网的核

    P1099 树网的核 (bzoj数据加强) 前置知识:树的直径 (并不想贴我的智障写法虽然快1倍但内存占用极大甚至在bzoj上MLE) 正常写法之一:用常规方法找到树的直径,在直径上用尺取法找一遍,再 ...

  8. P1099 树网的核——模拟+树形结构

    P1099 树网的核 无根树,在直径上找到一条长度不超过s的路径,使得最远的点距离这条路径的距离最短: 首先两遍dfs找到直径(第二次找的时候一定要吧father[]清零) 在找到的直径下枚举长度不超 ...

  9. P2491 消防/P1099 树网的核

    P2491 消防/P1099 树网的核 双倍经验,双倍快乐. 题意 在一个树上选择一段总长度不超过\(s\)的链使所有点到该链距离的最大值最小. 输出这个最小的值. 做法 Define:以下\(s\) ...

随机推荐

  1. Tarjan 模板,高级并查集

    第一个模板有误!!!! 请见谅!!! 要怪就怪HDU吧,竟然让我过了 第二个模板是正确的.请翻到下面看更新 HDU 1269 评论区居然有人说用并查集过了,其实回想一下 求无向图的连通分量,就是并查集 ...

  2. 题解【bzoj4650 [NOI2016]优秀的拆分】

    Description 求对每一个连续字串将它切割成形如 AABB 的形式的方案数之和 Solution 显然 AABB 是由两个 AA 串拼起来的 考虑维护两个数组 a[i] 和 b[i] ,其中 ...

  3. (注意格式,代替C++的getchar())汉字统计hdu2030

    汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. k8s 常用命令汇集

    通过yaml文件创建: kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete) kubectl apply -f xxx.yaml (创建+更新,可以重复使 ...

  5. pyglet----画一个矩形

    这里列出一种在窗口Window中画图的程序框架.......... #-*- coding:utf-8 -*- from pyglet.gl import * def draw_rect(x, y, ...

  6. BeautifulSoup 获取无标签文本

    比如: <p>aaa</p>bbb <p>ccc</p>ddd 怎么获取bbb和ddd呢? 结果:

  7. django在读取数据库时未筛选到符合条件的记录会报错

    (1)报错情况如下: DoesNotExist: Publisher matching query does not exist.   (2)处理方法: try:    p = Publisher.o ...

  8. js对象之window和document区别

    window是整个页面的全局环境,而document可以理解为整个页面这个最大的元素(整个dom树) window: 可以看到window下面有很多变量 document: 可见document是整个 ...

  9. excel自动化翻译2

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  10. SerializeField和HideInInspector

    在Unity中,一个变量为公有类型,但是呢你不想让它显示在属性面板上,这个时候用 [HideInInspector] 这是隐藏的意思,举例: 用了[HideInInspector] 之后 就是这样用的 ...