floyd+枚举

看点:

1.floyd同时用数组p记录转移节点k,这样知道线段的端点u v就可以得到整条线段

2.任意一点c到线段a b的距离=(d[a][c]+d[c][b]-d[a][b])/2

3.枚举直径st en的所有子线段a b:

for(int a=en;a;a=p[st][a])
  for(int b=a;b;b=p[st][b])

代码:

#include<iostream>
#include<cstring>
#define Size 305
using namespace std;int n,s;
int num=0;
int ans=0x3f3f3f3f;
int d[Size][Size];
int p[Size][Size];
struct path{int u,v;
}g[Size*Size];
int cnt=0;int main(){memset(d,0x3f,sizeof(d));cin>>n>>s;for(int i=1;i<=n;i++)d[i][i]=0;int a,b,w;for(int i=1;i<n;i++){cin>>a>>b>>w;d[a][b]=d[b][a]=w;p[a][b]=a; p[b][a]=b;}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){if(k==i)continue;for(int j=1;j<=n;j++){if(k==j||i==j)continue;if(d[i][k]+d[k][j]<d[i][j]){d[i][j]=d[i][k]+d[k][j];p[i][j]=k;num=max(num,d[i][j]);}}}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(d[i][j]==num){g[++cnt].u=i; g[cnt].v=j;}}}for(int i=1;i<=cnt;i++){int st=g[i].u; int en=g[i].v;//cout<<st<<' '<<en<<endl;for(int a=en;a;a=p[st][a]){for(int b=a;b;b=p[st][b]){if(d[a][b]>s)break;//cout<<"  "<<a<<' '<<b<<"  "<<endl;int dis=0;for(int c=1;c<=n;c++){dis=max(dis,(d[a][c]+d[c][b]-d[a][b])/2);}ans=min(ans,dis);}}}cout<<ans<<endl;
} 

转载于:https://www.cnblogs.com/FuTaimeng/p/5647442.html

code1167 树网的核相关推荐

  1. [O(N)的我不会]树网的核

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

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

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

  3. 树网的核(codevs 1167)

    题目描述 Description [问题描述] 设 T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我 们称T 为树网(treenetwork),其中V, E分 ...

  4. NOIP2007 树网的核 [BZOJ2282][Sdoi2011]消防

    NOIP2007 树网的核 树的直径的最长性是一个很有用的概念,可能对一些题都帮助. 树的直径 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和.树中最远的两个节点之 ...

  5. 树网的核 Vijos1362 NOIP2007 树结构 直径 暴搜

    题面在最下方. 树结构的题做多了就会发现,本题所谓的树网的核(一段偏心距ECC最小的路径)一定是在树的直径上的. 我刚开始做的时候没想到这个,然后写了三个dfs讨论每条直径 Orz 其实只要认识到了这 ...

  6. VIJOS 1362 树网的核

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

  7. 2017.3.21 树网的核 思考记录

    把这个noip的题搞出来了.. 不是很难,而且我的要求也比较高(虽然以前看到这种题都是直接看题解,因为太复杂不会) 虽然搞出来在luogu 的noip数据 A了,但bzoj还是T了.理论上应该是O(n ...

  8. 洛谷P1099 树网的核

    传送门 80分 $ Floyd $ 树的直径可以通过枚举求出.直径的两个端点$ maxi,maxj $ ,由此可知对于一个点 $ k $ ,如果满足 $ d[maxi][k]+d[k][maxj]== ...

  9. bzoj 1999: [Noip2007]Core树网的核【树的直径+单调队列】

    我要懒死了,所以依然是lyd的课件截图 注意是min{max(max(d[uk]),dis(u1,ui),dis(uj,un))},每次都从这三个的max里取min #include<iostr ...

最新文章

  1. palapaweb怎样开启服务_过年期间如何做到系统服务安全运行?
  2. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法
  3. Algs4-2.1.37部分有序
  4. linux如何使用vim显示行号语法高亮,(.vimrc简单使用)
  5. MySQL【问题记录 01】报错 1709 - Index column size too large. The maximum column size is 767 bytes. 可能是最简单的方法
  6. 【Linux】一步一步学Linux——group文件详解(108)
  7. 数据结构与算法之BFPRT算法
  8. 世界最小晶体管问世 栅极长度仅一纳米
  9. mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】
  10. 使用idea本地运行mapreduce程序,控制台log4j日志没有打印出来,可以这样解决
  11. MariaDB安装、卸载以及相关设置(Linux服务器Mysql部署)
  12. 前端开发学习路线图,完整学习教程+工具+框架
  13. security工作笔记006---oauth2(spring security)报错method_not_allowed(Request method 'GET' not supported)解决
  14. linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器
  15. sw如何缩放装配体_solidworks提高大型装配体的展示、设计效率
  16. steam怎么共享计算机游戏,steam怎么共享游戏给好友?steam向好友共享游戏教程
  17. 【手游】手游行业专业相关知识储备
  18. cscope.exe程序的base64文本
  19. 最常用到的35种心理效应集锦
  20. PHP编写modbus,php – CRC-CCITT转CRC16 Modbus实现

热门文章

  1. sturts2标签判断多个条件
  2. jfreechart 时序图 ,生成图表
  3. zookeeper节点类型详解
  4. java 异常堆栈输出_打印Java异常堆栈信息
  5. python 数组 indexof_Javascript Array.lastIndexOf()方法
  6. 渗透测试之通过代码审计打点
  7. phpcms漏洞总结
  8. sqlmap的使用----进阶
  9. cmake指定gcc版本
  10. java中常用的几种排序算法--常见笔试面试