📄 邻接矩阵求解最短路径(数组).c
字号:
main()
{int i,j,k,s[6]={999,999,999,999,999,999},d[6],num,m;
int a[6][6]={{999,10,70,999,999,999},/*邻接矩阵来表示网,'999'表示无连接*/
{999,999,999,999,20,999},
{999,999,999,20,999,999},
{999,999,999,999,30,10},
{999,999,30,999,999,999},
{999,999,999,999,10,999}};
for(i=1;i<=5;i++){
s[i]=a[0][i];/*s[i]存放目前最短路径*/
d[i]=0;}
for (i=1;i<=5;i++){
for(j=1;j<=5;j++){
if((s[j]>a[i][j]+s[i])&&(s[i]!=999))
{
num=s[j]-a[i][j]-s[i];
s[j]=a[i][j]+s[i];/*改变目前最短路径*/
d[j]=i;
k=1;m=j;
while(k<=5) /*当这条最短路径改变后,改变以这条路径为基础的最短路径*/
{if(d[k]==m) {s[k]=s[k]-num;m=k;k=1;}
k++;}
}
}
}
for(i=1;i<=5;i++)/*输出最短路径*/
if (s[i]==999) printf("The 0 to %d is num(V0--V%d--V%d)\n",i,d[i],i);
else printf("The 0 to %d is %d(V0--V%d--V%d)\n",i,s[i],d[i],i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -