HDU1874畅通工程续(Floyd算法)

简单的最短路径,给地图。再给两个点,求这两个点之间的最短路径。
直白的做法就是Floyd算法。时间复杂度比较高,但是做这道题目足够了。
这道题目有一个坑点,就是两个点之间可能有若干条路径,那么要求最短路径的时候,必然只会选择最短的一天。毕竟其他的效果都是一样。

所以在输入的时候就处理下,每次输入,判断一下,更新最小的路径。

#include
#include
#include
#include
#include
#define inf 100000000
using namespace std;
int n,m;
int e[205][205];
void init()
{
	int i,j;
	for(i=0;ie[i][k]+e[k][j])
					e[i][j]=e[i][k]+e[k][j];
}
int main()
{
	int i,t1,t2,t3,sta,ed;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		init();
		for(i=1;i<=m;i++)
		{
			scanf("%d%d%d",&t1,&t2,&t3);
			if(t3=inf)
			printf("-1\n");
		else
			printf("%d\n",e[sta][ed]);
	}
}


你可能感兴趣的:(HDU1874畅通工程续(Floyd算法))