Floyd【模板】

Floyd【依旧是模板】

代码如下:

#include <iostream>
#include <cstdio>

using namespace std;

const int inf = 1e9 + 7;

int n,m,e[2357][2357],u,v,w;

int main()
{
	scanf("%d%d",&n,&m);
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= n; j ++)
			if(i != j)e[i][j] = inf;
	for(int i = 1; i <= m;i ++)
	{
		scanf("%d%d%d",&u,&v,&w);
		e[u][v] = min(e[u][v],w);
		/*  
			如果是无向图需要下列语句
			e[v][u] = min(e[v][u],w);
		*/
	}
	for(int k = 1; k <= n; k ++)
		for(int i = 1; i <= n; i ++)
			for(int j = 1; j <= n; j ++)
				e[i][j] = min(e[i][j],e[i][k]+e[k][j]);
	for(int i = 1; i <= n; i ++)
	{
		for(int j = 1; j <= n; j ++)
		{
			printf("%d ",e[i][j]);
		}
		printf("\n");
	}
	return 0;
}

PS :

时间复杂度: O(n^3)

处理类型:多源最短路

特别鸣谢: 啊哈磊

猜你喜欢

转载自blog.csdn.net/Mr_S_Edward/article/details/83690247