邻接矩阵求解最短路径(数组).c

来自「邻接矩阵求解最短路径(数组).rar 邻接矩阵求解最短路径(数组).rar」· C语言 代码 · 共 32 行

C
32
字号
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 + =
减小字号Ctrl + -
显示快捷键?