最短路径算法:Floyd、判断两点是否连通

d[i][j]表示从点i到点j之间的最短路径
d[i][j]=min(d[i][k]+d[k][j],d[i][j]);
d[i][j]=G[i][j],如果不联通是正无穷

for(int i=1;i<=k;i++){ //中转点
	//d[i][j]以前k-1个点作为中转点的最短路径
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			d[i][j]=min(d[i][k]+d[k][j],d[i][j]);
		}
	}
	//d[i][j]以前k个点作为中转点的最短路径
}

判断两点之间是否联通:

for k from 1 to n
	for i from 1 to n
		for j from 1 to n
			f[i][j]=f[i][j]||f[i][k]&&f[k][j]
posted @ 2021-05-29 10:37  ICtiger  阅读(610)  评论(0)    收藏  举报