描述
用弗洛伊德算法求任意两点间的最短路径的长度,
输入
先输入一个小于100的正整数n,然后的n行输入图的邻接矩阵(10000表示无穷大,即两点之间没有边),之后再输入一个小于100的正整数m,最后的m行每行输入两个不同的0到n-1之间的整数表示两个点,
输出
用弗洛伊德算法求任意两点间的最短路径的长度,并输出这些两个点之间的最短路径的长度。
输入样例
4
0 2 10 10000
2 0 7 3
10 7 0 6
10000 3 6 0
2
0 2
3 0
输出样例
9
5
弗洛伊德和迪杰斯特拉在AC时随便选一种就好。
想要用弗洛弗洛伊德求一个点到其他各个点的最短距离 只需在最后加上
for(i=0;i
#include<stdio.h>
#define inf 10000
int main()
{
int e[100][100];
int i,j,k,n,m,a,b,v;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&e[i][j]);
scanf("%d",&m);
for(v=0;v<m;v++)
{
scanf("%d%d",&a,&b);
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(e[i][j]>e[i][k]+e[k][j])
e[i][j]=e[i][k]+e[k][j];
printf("%d\n",e[a][b]);
}
return 0;
}
本文介绍了一个使用弗洛伊德算法求解任意两点间最短路径的程序实现。通过输入图的邻接矩阵及指定的点对,程序能够计算并输出这些点对之间的最短路径长度。
3548

被折叠的 条评论
为什么被折叠?



