题目链接

题目大意

一个有n个点的图中,求一个点,使得这个点到其他点的最短路的最长距离最短。

输入数据中,有多组测试。每组测试第一行为n,接下来n行,每行第一个x,xi表示第i个点和x个点有路径。接下来x个数对a,b表示i到a的代价为b

最后输出这个点和最长距离。

这道题是显而易见的最短路了。但是我们发现这个题的起点不确定。所以不是单源最短路,不能用SPFA

这里介绍另外一种算法:floyd算法。

floyd算法主要解决的是多源最短路问题,范围比SPFA更广,但时间复杂度是O(n^3)。再看题目n≤100,符合条件。

floyd算法,简而言之,就是找i,j两个点,然后找一个中间点k,如果i->k+k->j的最短路径比当前i->j更短,就更新i->j的最短路。

代码如下:

for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(f[i][j]>f[i][k]+f[k][j])//f存i->j的最短路{f[i][j]=f[i][k]+f[k][j];}}}}  

最后统计答案时,对于每一个点i,看看它到其他点的最短路的最大值。这样,这道题的代码就呼之欲出了。

参考代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
int n;
int f[105][105];
int main()
{while(1){scanf("%d",&n);if(n==0)break;memset(f,63,sizeof(f));for(int i=1;i<=n;i++){f[i][i]=0;int x;scanf("%d",&x);for(int j=1;j<=x;j++){int soy1,soy2;scanf("%d %d",&soy1,&soy2);f[i][soy1]=soy2;}}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(f[i][j]>f[i][k]+f[k][j]){f[i][j]=f[i][k]+f[k][j];}}}}/*for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)printf("%d ",f[i][j]>10000?-1:f[i][j]);printf("\n");}*/int ans=2147483647,ans2=-1;for(int i=1;i<=n;i++){int tt=-1;for(int j=1;j<=n;j++){if(f[i][j]>999999){tt=-1;break;}if(f[i][j]>tt)tt=f[i][j];}if(tt!=-1 && tt<ans){ans=tt;ans2=i;}}if(ans2==-1)printf("disjoint\n");else printf("%d %d\n",ans2,ans);}return 0;
}

View Code

转载于:https://www.cnblogs.com/AFOer-lhy/p/7826007.html

【Step1】【floyd】poj1125-Stockbroker Grapevine相关推荐

  1. 【2018.3.17】模拟赛之四-ssl1864jzoj1368 燃烧木棒【最短路,Floyd】

    正题 链接 需要纪中OJ账号 有n条木棒,长度为1或根号2,给出每根木棒两头的坐标,和燃烧需要的时间.只能从一个木棒的一头开始点火,求燃烧完所有木棒所需要的最短时间. 输入输出(需要自取) Input ...

  2. ssl1624-小萨的烦恼【图论,最短路,Floyd】

    题目 一个图,只有一次快速的机会,不快速就得花双倍价格,求点1到点s的最短路,然后*2输出 输入 第一行有三个整数N.T.S 接下来是一个N*N的邻接矩阵.两点之间的距离不超过10^9.A[i,j]为 ...

  3. P1850-换教室【数学期望,dp,Floyd】

    正题 题目大意 一张图,nnn次,每次在cic_ici​上课,可以申请换课室到did_idi​,成功概率kik_iki​.求最短需要走的路径的期望长度 解题思路 先FlodyFlodyFlody预处理 ...

  4. poj1125 Stockbroker Grapevine Floyd算法

    问题描述 Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of ...

  5. POJ-1125 Stockbroker Grapevine 最短路

    这题要处理的地方的就是一个人可以同时向多个人传递消息,也就是说一条消息的传递时间由最长的那一条路径所决定,因为可以同时进行嘛,所以就求某一点到所有点的最短路,然后再寻找一条最长的路劲,枚举每个顶点作为 ...

  6. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  7. 怎么用class引入svg_【蓝湖指北】走向设计巅峰,从蓝湖 Sketch 插件开始,用它!...

    用好蓝湖,提升团队协作效率,蓝湖指北,教你如何用好蓝湖.本期[蓝湖指北]如约而至- Sketch 作为一款轻量级的矢量设计工具,凭借其强大的界面设计功能,被大多数 UI 设计师所使用,日渐成为产品研发 ...

  8. 【AI白身境】Linux干活三板斧,shell、vim和git

    文章首发于微信公众号<与有三学AI> [AI白身境]Linux干活三板斧,shell.vim和git 今天是专栏<AI白身境>的第二篇,所谓白身,就是什么都不会,还没有进入角色 ...

  9. 【Get 以太坊技能】CentOS 7 Geth 搭建私链

    前言 CentOS Linux release 7.4.1708 (Core) geth Version: 1.8.17-stable ([Get 以太坊技能]CentOS 7 Geth安装) 为啥搭 ...

  10. 【Python】【Flask】

    [快速开始] from flask import Flask, url_for, render_template, redirectapp = Flask(__name__) "" ...

最新文章

  1. 关于ftp的说法错误的是_斯坦福教授:成长型思维的养成,只需要换个说法,思维是可以训练的!...
  2. python处理csv文件缺失值_python 加载数据是-1为缺失值时替换为空
  3. 虚拟机安装多了,怎么删除?
  4. 20160331数据文件offline与open resetlogs2
  5. 修改Static控件的字体颜色
  6. 牛客小白月赛12:月月给华华出题(欧拉函数)
  7. 将JINQ与JPA和H2一起使用
  8. [vue] SPA首屏加载速度慢的怎么解决?
  9. Python 实现新冠病毒分布实时追踪
  10. win10中配置Java完整教程
  11. Eset易视Smart灵巧护卫Security
  12. 虚幻airsim1:下载安装
  13. 菲尼克斯馈电隔离器 - MINI MCR-SL-RPS-I-I
  14. arcgis出界址点成果表_勘测定界界址点坐标成果表(TXT文件)
  15. php cmyk转rgb,用PHP将CMYK格式的JPG文件转为RGB格式 | 学步园
  16. 什么是对比度、亮度?教你在线调整图片色彩
  17. 扎拉赞恩 服务器 微信群,魔兽8.0剧透 回归的扎拉赞恩与沃金的骨灰
  18. html选择本地文件视频并播放器,使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file)...
  19. 人工智能之知识图谱体系总结
  20. MySql 存储boolean的数据

热门文章

  1. windows驱动开发详解学习笔记
  2. Visual Studio 内存泄漏检测方法
  3. 如果你在北京失业了,别怕,记得去领这笔钱!最少2034元/月!
  4. Zookeeper 使用
  5. 单行溢出 和多行溢出
  6. 汇编 --- 从磁盘(扇区2到18)上读取数据到内存中
  7. python 时间日期处理
  8. Linux基础入门学习笔记之二
  9. android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏
  10. Android 布局学习之——Layout(布局)详解一