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