poj 1125 求最短路径
来源:互联网 发布:淘宝店铺装饰 编辑:程序博客网 时间:2024/05/01 11:31
题目大意:给出一组顶点和各顶点到达其他的直接距离,求每个点到其他点的最短距离中的最大值,然后在这些点里面最大值里面的最小值,而且要注意这个点要是能到达其他每个点。
解题思路:floyd算法求出每对点之间的最小值,然后枚举每个顶点,就这个顶点到其他点的距离中的最大值,而且要保证这个顶点都能到达其他每个点,求这些最大值里面的最小值和相应顶点。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 101;int graph[maxn][maxn], dp[maxn][maxn];int n, m;int main(){while(true){scanf("%d", &n);if(n == 0)break;memset(graph, -1, sizeof(graph));for(int i = 1; i <= n; i++){graph[i][i] = 0;scanf("%d", &m);for(int j = 0; j < m; j++){int index, val;scanf("%d %d", &index, &val);graph[i][index] = val;}}for(int k = 1; k <= n; k++){for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){if(graph[i][k] != -1 && graph[k][j] != -1){if(graph[i][j] == -1)graph[i][j] = graph[i][k] + graph[k][j];elsegraph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]);}}}}int index = -1, pre = -1, tmp = -1;bool flag = true;for(int i = 1; i <= n; i++){flag = true;tmp = -1; for(int j = 1; j <= n; j++){if(i == j)continue;if(graph[i][j] == -1){flag = false;break;}tmp = max(tmp, graph[i][j]);}if(!flag)continue;if(pre == -1){pre = tmp;index = i;}else{if(pre > tmp){pre = tmp;index = i;}}}if(index == -1){printf("disjoint\n");continue;}printf("%d %d\n", index, pre);}return 0;}
- poj 1125 求最短路径
- Poj 1125 (Floyd算法求最短路径)
- poj 1502 Dijkstra 求最短路径。
- poj 1125 最短路径
- POJ 1125 Stockbroker Grapevine(求最短路径—Floyd算法)
- POJ 3278 爬格子 (bfs求最短路径)
- POJ 1125(多源最短路径问题)
- POJ 1125 (多源最短路径—Floyd算法)
- POJ 1125:Stockbroker Grapevine:多源最短路径forld
- poj 1125 (floyed 最短路径)
- poj --1125----Stockbroker Grapevine(多源最短路径)
- poj 1125 Stockbroker(多源最短路径)
- 由poj 1125,poj 1062解析最短路径
- POJ 最短路径
- poj 1502 单源最短路径
- poj 1797(路径限制)
- POJ (BFS + 路径输出)
- poj 3126 素数路径
- cocos2d 可不可以设置层的可视区域
- Unity3d_Streaming Assets
- poj 3468 A Simple Problem with Integers
- 韩顺平 PHP视频教程 zend framework 第1讲 ——第4讲 笔记心得
- VMWARE虚拟机中的UBUNTU网络设置(桥接)
- poj 1125 求最短路径
- C#操作IIS完整解析
- PhysX学习记录 六 Joint
- 游标
- 操作 Windows7 任务栏的快捷方式
- JS 图片轮播
- linux 常用系统命令
- Andorid广播作为内部类要如何静态注册
- 招聘信息No.1