码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 2544 最短路->最短路

时间:2015-03-15 23:45:08      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:acm   c++   算法   编程   最短路   

最短路,简单题,floyd实现,在求最短路时一定要是是最大节点编号maxnum而不是输入的n,否则是错的。


#include<iostream>   
using namespace std;

int map[105][105];           //无向图

void Init()
{
	int MAX=1000000,i,j;

	for(i=1;i<=104;i++)
		for(j=1;j<=104;j++)
			if(i==j) map[i][j]=0;
			else map[i][j]=MAX;
}

void floyd(int n)
{
	for(int k=1;k<=n;k++)  //k代表中间点
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(map[i][k]+map[k][j]<map[i][j])
					map[i][j]=map[i][k]+map[k][j];
}


int main()  
{
	int n,m,a,b,c,maxnum;

	while(cin>>n>>m &&(n||m))
	{
		Init();
		maxnum=0;             //最大节点编号
		for(int i=0;i<m;i++)
		{
			cin>>a>>b>>c;
			map[a][b]=map[b][a]=c;
			maxnum=maxnum>a?maxnum:a;
			maxnum=maxnum>b?maxnum:b;
		}
		floyd(maxnum);                //一定要是最大节点编号,而不是n。
		cout<<map[1][n]<<endl;
	}
    return 0;  
}


HDU ACM 2544 最短路->最短路

标签:acm   c++   算法   编程   最短路   

原文地址:http://blog.csdn.net/a809146548/article/details/44283581

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!