已知一AOV网采用邻接矩阵存储方法,而邻接矩阵的三元组表示依次为(8,8,10),(1,2,1),(1,3,3),(2,4,14),(2,5,10),(2,5,11),(4,6,7),(5,7,5),(6,8,8),(7,8,10) #include <stdio.h> int main() {int i,j,k,s[8]={999,999,999,999,999,999},d[8],num,m; int a[8][8]={{999,1,3,999,999,999,999,999},/*邻接矩阵来表示网,'999'表示无连接*/ {999,999,999,14,10,999,999,999}, {999,999,999,999,11,999,999,999}, {999,999,999,999,999,7,999,999}, {999,999,999,999,999,999,5,19}, {999,999,999,999,999,999,999,8}, {999,999,999,999,999,999,999,10}, {999,999,999,999,999,999,999,999}}; for(i=1;i<=7;i++){ s[i]=a[0][i];/*s[i]存放目前最短路径*/ d[i]=0;} for (i=1;i<=7;i++){ for(j=1;j<=7;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<=7) /*当这条最短路径改变后,改变以这条路径为基础的最短路径*/ {if(d[k]==m) {s[k]=s[k]-num;m=k;k=1;} k++;} } } } for(i=1;i<=7;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); return 0; }