使用离散数学中关于迪克特斯拉算法例子
#include<stdio.h>
#include <stdlib.h>
#define MAXV 100
#define INF 32767 //INF表示∞
typedef char InfoType;
typedef struct
{
int no;
InfoType info;
}VertexType;
typedef struct
{
int edges[MAXV][MAXV];//邻接矩阵
int n,e;//顶点数和边数
VertexType vex[MAXV];//存放顶点总和
}MGraph;
//查找路径顶点
void Ppath(int path[],int i,int v) //前向递归查找路径上的顶点
{
int k;
k=path[i];
if (k==v) return; //找到了起点则返回
Ppath(path,k,v); //找顶点k的前一个顶点
printf("%d,",k); //输出顶点k
}
//输出最短路径
void DisplayPath(int dist[],int path[],int s[],int n,int v)
{
int i;
for(i=0;i<n;i++)
{
if(s[i]==1)
{
printf("从%d到%d的最短路径长度是:%d\t",v,i,dist[i]);
printf("%d,",v);
Ppath(path,i,v);