?? 12-8.c
字號(hào):
#include "stdio.h"
#include "stdlib.h"
typedef int DataType;
void Allpairs(DataType **c, int **kay)
{//所有點(diǎn)對(duì)的最短路徑
//對(duì)于所有i和j,計(jì)算c [ i ] [ j ]和k a y [ i ] [ j ]
//初始化c [ i ] [ j ] = c(i,j,0)
int i,j,k;
for (i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
c[i][j] = a[i][j];
kay[i][j] = 0;
}
for (i = 1; i <= n; i++)
c[i][i] = 0;
// 計(jì)算c[i][j] = c(i,j,k)
for(k = 1; k <= n; k++)
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++) {
DataType t1 = c[i][k];
DataType t2 = c[k][j];
DataType t3 = c[i][j];
if (t1 !=0&& t2 !=0&& (t3 ==0||t1+t2<t3)){
c[i][j] = t1 + t2;
kay[i][j] = k;
}
}
}
void outputPath(int **kay, int i, int j)
{// 輸出i 到j(luò) 的路徑的實(shí)際代碼
if (i == j)
return;
if (kay[i][j] == 0)
printf("%d ",j);
else {
outputPath(kay,i, kay[i][j]);
outputPath(kay,kay[i][j],j);
}
}
//輸出最短路徑
void PrintPath(DataType **c, int **kay, DataType NoEdge, int i, int j)
{// 輸出從i 到j(luò)的最短路徑
if (c[i][j] == NoEdge) {
printf("There is no path from %d to %d\n",i,j);
return ;
}
printf( "The path is\n");
printf("%d",i);
outputPath(kay,i,j) ;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -