最短路问题
来源:互联网 发布:微商城分销php开发手册 编辑:程序博客网 时间:2024/06/01 19:32
2478: 最短路问题
Time Limit:5000MS Memory Limit:65536KBTotal Submit:16 Accepted:3 Page View:402
Submit Status Discuss
Description
现在有n个城市,编号从1到n。现在已知从城市i到城市j需要走的时间为aij。M78要从城市1到城市n。M78有一个飞行符,飞行符可以使得他瞬间通过一条边或连续的两条边(连续走一条边或两条边的时间为0)。问,M78从城市1到城市n,最少花费的时间。
Input
多组输入。每组第一行有一个整数n,表示城市的数目。(2<=n<=1000)接下来将输入一个n*n的矩阵。矩阵第i行第j列的数字aij表示从城市i到城市j,花费的时间为aij。(0<=aij<=10000 , aii=0 ,aij=aji)。如果aij=0,表示没有这条路。
Output
每组输出一个数字,表示M78从城市1到城市n花费的最少时间。特别的,如果M78到不到了城市n,输出-1。
30 1 11 0 11 1 0
0
Submit Status Discuss
题中把图的构造直接告诉我们了,所以只需要用数组存起来直接用Floyd算法,就可以求得最短路径,不过之前我写错的地方是没注意到应该双向赋值。
#include <iostream>#include<cstring>#include<cstdio>#define INF 9999999using namespace std;int main(){ int n,m,a,b,w[105][105],len; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0||m==0) break; else { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) w[i][j]=(i==j?0:INF); for(int i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&len); if(a != b && w[a][b] > len) { w[a][b]=len; w[b][a]=len; //双向赋值 } } for(int k=1;k<=n;k++) //Floyd模板 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(w[i][j]>w[i][k]+w[k][j]) w[i][j]=w[i][k]+w[k][j]; } printf("%d\n",w[1][n]); } } return 0;}
0 1
- js 最短路问题
- 最短路问题
- poj1062(最短路问题)
- 最短路问题
- Matlab--最短路问题
- 最短路问题总结
- 最短路问题
- 最短路问题 小结
- poj1062 最短路问题
- 最短路问题 小结
- 最短路问题
- 最短路问题
- Arbitrage(最短路问题)
- 图论-最短路问题
- 单元最短路问题
- SPFA(最短路问题)
- 最短路问题
- 3268最短路问题
- 布局、Layout、丝印等规则
- Qt 的sqlite数据库的学习
- iOS---Finder找不到Library目录?
- Qt中提高sqlite的读写速度
- C++面向对象操作符重载:调用操作符和函数对象
- 最短路问题
- 每天一点python——python数据类型
- php-fpm服务启动脚本 service chkconfig
- 三层架构及其优缺点
- springboot 项目运行jsp
- Qt数据库sqlite总结
- awk 正则表达式、正则运算符详细介绍
- 欢迎使用CSDN-markdown编辑器
- OSGI EQUINOX 参数配置