Floyd算法,求图中两个点之间的最短距离

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string.h>
#include <queue>  //Floyd算法,求图中两个点之间的最短距离       
#define inf 1000000   //hdu2544 
using namespace std;
int n, map[110][110];
int main()
{
	int i, t, m, j, a, b, c;
	while(scanf("%d%d", &n, &m)!=EOF)
	{
		if(n==0&&m==0)break;
		for(j=1; j<=n; ++j)
		{
			for(t=1; t<=n; ++t)
				map[j][t]=inf;   //初始化,j到t的距离
		}
		while(m--)
		{
			scanf("%d%d%d", &a, &b, &c);
			map[a][b]=map[b][a]=c;
		}
		for(i=1; i<=n; i++)   //算法核心,三重循环
		{
			for(j=1; j<=n; ++j)
			{
				for(t=1; t<=n; ++t)
				{
				if(map[j][i]!=inf&&map[i][t]!=inf&&map[j][t]>map[j][i]+map[i][t]) //注意这里是map[j][t],同时防止溢出所造成的错误(map[j][i]!=inf&&map[i][t]!=inf)
      				map[j][t]=map[j][i]+map[i][t];
				}
			}
		}
		printf("%d\n", map[1][n]);
	}
	return 0;
}
		


 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012432475/article/details/17012167
个人分类: 数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭