code1167 树网的核
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=;
int ans=0x3f3f3f3f;
int d[Size][Size];
int p[Size][Size];
struct path{
int u,v;
}g[Size*Size];
int cnt=; int main(){
memset(d,0x3f,sizeof(d));
cin>>n>>s;
for(int i=;i<=n;i++)d[i][i]=;
int a,b,w;
for(int i=;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=;k<=n;k++){
for(int i=;i<=n;i++){
if(k==i)continue;
for(int j=;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=;i<=n;i++){
for(int j=;j<=n;j++){
if(d[i][j]==num){
g[++cnt].u=i; g[cnt].v=j;
}
}
}
for(int i=;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=;
for(int c=;c<=n;c++){dis=max(dis,(d[a][c]+d[c][b]-d[a][b])/);}
ans=min(ans,dis);
}
}
}
cout<<ans<<endl;
}
code1167 树网的核的更多相关文章
- 树网的核[树 floyd]
描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并设T ...
- [BZOJ1999][codevs1167][Noip2007]Core树网的核
[BZOJ1999][codevs1167][Noip2007]Core树网的核 试题描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称T为树网(t ...
- 5.19[bzoj树网的核]
围观了final,SJTU还是飞了,泽民同志劲啊! 膜拜归膜拜...回来开题 bzoj1999树网的核 最近就喜欢给自己找切不动的题...QAQ ok.....昨天在家里做了一个下午+晚上 又困&am ...
- noip2007 树网的核
P1099 树网的核 112通过 221提交 题目提供者该用户不存在 标签动态规划树形结构2007NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 设T=(V, E, W) ...
- Cogs 97. [NOIP2007] 树网的核 Floyd
题目: http://cojs.tk/cogs/problem/problem.php?pid=97 97. [NOIP2007] 树网的核 ★☆ 输入文件:core.in 输出文件:core ...
- [bzoj1999]树网的核
从下午坑到网上..noip的数据太弱,若干的地方写挂结果还随便过= = 最坑的就是网上有些题解没考虑周全... 第一步是找直径,用两次bfs(或者dfs,Linux下系统栈挺大的..)解决.找出其中一 ...
- 洛谷 P1099 树网的核
P1099 树网的核 题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W ...
- NOIP 2007树网的核
题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...
- BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防
一道树的直径 树网的核 BZOJ原题链接 树网的核 洛谷原题链接 消防 BZOJ原题链接 消防 洛谷原题链接 一份代码四倍经验,爽 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍 ...
随机推荐
- 【整理】简单的数学期望和概率DP
数学期望 P=Σ每一种状态*对应的概率. 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc.在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我高中就是这么 ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- 【算法】通过TreeMap理解红黑树
本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程. 总体介绍 Java TreeMap实现了So ...
- CH3401 石头游戏
题意 3401 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (1≤n,m≤8) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数字指明 ...
- 对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间.现代的CPU都具有不同的操作模式,代表不同的 级别,不同的级别具有不同的功能,在较低的级别中将禁止某 ...
- k8s PersistentVolume hostpath 简单使用
kubernets host PersistentVolume 测试 因为yaml 格式的问题 ,我修改为了json 创建 pv pv.json { "kind": "P ...
- 采用轻量ServiceMesh实现灰度发布的实践
软件总会有缺陷的,解决问题的同时往往会引入新的问题,关键是看这些问题是否在我们的控制范围内,“灰度发布”就是让问题受控的方法之一. 前言 我们的 CTO 经常说:“研发团队最首要的任务是提供稳定的服务 ...
- [教程]Ubuntu下完整配置自动壁纸切换
来源:http://www.linuxidc.com/Linux/2016-09/135350.html 更原始的来源就不去找了,如果有找到的同学可以回复我我到时改过来www 来源的教程是有效的,但是 ...
- (转)SQL SERVER 日志已满的处理方法
本文转载自:http://www.cnblogs.com/eycbest/archive/2012/01/04/2311567.html 事务日志文件Transaction Log File是用来记录 ...
- bzoj 3059: 归途与征程
Description 给出一个长度为N的由小写字母’a’~’z’和’*’组成的字符串A,一个长度为M的仅由小写字母’a’~’z’组成的字符串B.一个’*’可以匹配任意多个字符(包括0个).求在B的所 ...