首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
codeforce266D 最短路
时间:
2015-05-16 16:39:00
阅读:
93
评论:
0
收藏:
0
[点我收藏+]
标签:
//给你一个无向连通图,找一个点使得它到这个图最短路中最大的距离最短
//可以遍历所有边,对于每条边有的连个顶点u,v
//可以通过这两个点将这个图分左边,u-v边,右边三个部分
//但是哪些点分在左边,哪些点分在右边,如果暴力所有情况显然会超时
//用一个二维数组存入所有点到u,v两个点的最短路
//将其排序,对于a[i].u >=a[j].u ,a[i].v >= a[j].v 的点,可以用i点代替j点
//那么剩下的点会出现u递增,v递减,所以如果从i分为左右两边那么i左边的最大值为a[i-1].u
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std ;
const int maxn = 210 ;
const int maxm = maxn*maxn ;
const int inf = 0x3f3f3f3f;
int x[maxm] ,y[maxm] ;
int edge[maxn][maxn] ;
int len[maxn*maxn] ;
pair<int , int> a[maxm] , b[maxm] ;
int n , m ;
void floyd()
{
for(int k = 1;k <= n;k++)
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
edge[i][j] = min(edge[i][k] + edge[k][j] , edge[i][j]) ;
}
double solve()
{
floyd() ;
int ans = inf ;
for(int i = 1;i <= m;i++)
{
int u = x[i] ;
int v = y[i] ;
for(int j = 1;j <= n;j++)
a[j] = make_pair(edge[u][j] , edge[v][j]) ;
sort(a+1 , a+1+n) ;
int k = 0;
for(int j = 1;j <= n;j++)
{
while(k && a[j].second >= b[k].second)
k-- ;
b[++k] = a[j];
}
if(k == 1)ans =min(ans , min(b[1].first , b[1].second)) ;
else
for(int j = 2;j <= k;j++)
ans = min(ans , (b[j-1].first + b[j].second + len[i])>>1) ;
}
return (double)ans/2 ;
}
int main()
{
while(~scanf("%d%d" ,&n , &m))
{
int u , v , w ;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
edge[i][j] = i==j ? 0:inf ;
for(int i = 1;i <= m;i++)
{
scanf("%d%d%d" ,&u , &v , &w) ;
edge[u][v] = edge[v][u] = 2*w ;
len[i] = 2*w ;
x[i] = u ;y[i] = v ;
}
printf("%lf\n" ,solve());
}
return 0;
}
codeforce266D 最短路
标签:
原文地址:http://blog.csdn.net/cq_pf/article/details/45768375
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!