题目链接:http://poj.org/problem?id=1125

多源点最短路中的,最长路的,最短路。 看到这里就懵逼了,解释一下,找到一个源点,使得路最短,(遍历源点),路最短怎么求呢? 就是找到从该源点出发,到达所有点中的最长的点的路径,就是他的最短路,然后根据n个源点,找到这样的最长路最短的,就行了。

这里的具体Floyd算法,我还没推过,dis[i][j]从I到J的最短路。

#include <stdio.h>
#include <string.h>
#include <algorithm> using namespace std; #define INF 0x3f3f3f3f int dis[][];
int n; void floyd()
{
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]); int minlength = INF;
int flag = ;
for(int i=;i<=n;i++)
{
int maxlength = ;
for(int j=;j<=n;j++)
{
if(i!=j&&dis[i][j]>maxlength)
maxlength = dis[i][j];
} if(minlength>maxlength)
{
minlength = maxlength;
flag = i;
}
}
if(flag)
printf("%d %d\n",flag,minlength);
else printf("disjoint\n");
} int main()
{
while(scanf("%d",&n),n)
{
memset(dis,INF,sizeof(dis)); for(int i=; i<=n; i++)
{
int pairs;
scanf("%d",&pairs);
for(int j=; j<=pairs; j++)
{
int to,time;
scanf("%d%d",&to,&time);
dis[i][to] = time;
}
}
floyd();
}
return ;
}

最新文章

  1. 基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式
  2. Teradata SQL tips
  3. poj 3253 初涉二叉堆 模板题
  4. Oracle基础—表分区
  5. Android Studio快捷键指南(本文持续更新)
  6. node.Js学习-- 创建服务器简要步骤
  7. Android系统默认Home应用程序(Launcher)的启动过程源码分析
  8. Coursera机器学习课程(2016 )错题集
  9. 建房子之前先挖地基 - Java BlockingQueue理解
  10. 简单动态规划——三逆数的O(N^2)解法!
  11. 手把手教你webpack、react和node.js环境配置(下篇)
  12. UNIX环境高级编程——进程间通讯方法整理
  13. 操作系统:diskpart常用指令(使用diskpart实现分区管理)
  14. css实现礼券效果3
  15. 对象的API
  16. (1)ESP8266微信门铃
  17. 步步为营-78-新闻展示(Ajax+Json+easyUI)
  18. 解决 插件LArea 在IOS上浮出软键盘问题
  19. [PHP] 算法-二位有序数组中查找的PHP实现
  20. 用户态tcp协议栈调研

热门文章

  1. Linux内核模块简单示例
  2. python3 repr()函数笔记
  3. 解决报错:import sun.misc.BASE64Decoder无法找到
  4. MySQL之prepare用法
  5. python 使用csv.reader和csv.writer读写文件并转换成dataframe格式
  6. checkbox多选、全选js效果
  7. Docker Ubuntu/CentOS 下运行 java jar
  8. gcc 4.9编译
  9. 深入学习webpack(三)
  10. 切图技巧——PS篇