根据图论课本上的一个图自己写的一个最短路径的dijkstra算法
#include<stdio.h>
const int m=999999999;
int main()
{
int tu[8][8]={0,1,4,4,m,m,m,m,
1,0,2,m,9,m,m,m,
4,2,0,3,6,3,m,m,
4,m,3,0,m,m,7,m,
m,9,6,m,0,2,m,1,
m,m,3,5,2,0,6,4,
m,m,m,m,1,4,3,0};//邻接矩阵 tu[m][n]为m到n的距离,如果m,n不直接相连,则默认为相距无穷远
int biaoji[8]={0};//已经用过的点标记为1,没用过的标记为0
int juli[8],n=7,i,dian=0,k=0,l;
biaoji[0]=1;
for(i=0;i<=7;i++)juli[i]=m;//先把出发点0到其他点(1到7)的距离设置为无穷大
while(n--)
{
l=m;
for(i=1;i<=7;i++)
if(biaoji[i]==0)
{
juli[i]=(juli[i]>(k+tu[dian][i])?(k+tu[dian][i]):juli[i]);
printf("%d ",juli[i]);
}
for(i=1;i<=7;i++)
if(l>juli[i]&&biaoji[i]==0){l=juli[i];k=juli[i];dian=i;}
biaoji[dian]=1;
if(dian==7)break;//寻找到了目标点7,停止程序运行(也可以将目标点设置为其他位置)
printf("\n");
}
printf("\n到目标点的距离为%d",juli[dian]);
}