题目地址:http://jobdu.sinaapp.com/problem.php?cid=1040&pid=75
C语言源码:
#include<stdio.h>
#include<limits.h>
#include<string.h>
#define maxsize 110
int s[maxsize][maxsize];
int main()
{
int n,m,i,j,k,time;
scanf("%d %d",&n,&m);
while(n!=0||m!=0)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s[i][j]=INT_MAX;
for(k=0;k<m;k++)
{
scanf("%d %d %d",&i,&j,&time);
s[i-1][j-1]=time;
s[j-1][i-1]=time;
}
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(s[i][k]==INT_MAX||s[k][j]==INT_MAX)
continue;
else
if(s[i][k]+s[k][j]<s[i][j])
s[i][j]=s[i][k]+s[k][j];
}
}
}
printf("%d\n",s[0][n-1]);
scanf("%d %d",&n,&m);
}
}
本文提供了一个使用C语言实现的图算法示例,该程序通过Floyd-Warshall算法计算图中任意两点之间的最短路径。具体包括读取图的数据结构、初始化距离矩阵并更新最短路径等关键步骤。
364

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



