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原题链接 消防 洛谷原题链接 一份代码四倍经验,爽 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍 ...
随机推荐
- It is the courage
It is the reality that a society which becomes lower and becomes weak.Believe it or not,I think it i ...
- oracle用expdp定时备份所有步骤详解[转]
用oracle命令备份数据库,生成dmp文件,保存了整一套的用户及表数据信息.还原简单.加上widnows的批处理bat命令,实现每天0点备份,现把经验送上给大家! 工具/原料 oracle11g ...
- nodejs json-t 基本测试
安装npm包 npm i json-templater or yarn add json-templater 基本代码 var render = require('json-templater/str ...
- 安装CentOS 6.x出现Disk sda contains BIOS RAID metadata
今天在安装CentOS 6.6的时候,当进到检测硬盘步骤的时候,总是过不去,报错如下:Disk sda contains BIOS RAID metadata, but is not part of ...
- RabbitMQ内存爆出问题解决思路
http://www.bubuko.com/infodetail-2121050.html RabbitMQ升级到3.6.1版本后,随着业务和系统功能的增加,出现RabbitMQ内存陡增直至服务宕掉的 ...
- python 命令行参数获取
import argparse parser = argparse.ArgumentParser(description='Real-Time Filtering evaluation script ...
- C#计数器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- T-SQL 总结
SP0_AddLinkedServer.sql [创建Linked SQL Server ] USE [master] GO ) drop procedure dbo.SP_Temp_AddLinke ...
- 关于javascript中的typeof和instanceof介绍
typeof用来检测给定变量的数据类型 instanceof用来检测对象的类型 typeof用来检测给定变量的数据类型(也可叫做基本类型,基本数据类型.包含undefined.boolean.stri ...
- Spring cloud @RefreshScope使用
参数 @RestController @RefreshScope public class HomeController { @Value("${foo}") String foo ...