/*
*迪杰斯特拉算法
*求源节点到其他各个节点的最短路径长度
*定义一个path数组 用来保存上一次的路径节点
*定义一个d数组 用来保存源节点到各个节点的最小路径
*定义一个s数组 用来保存已经找到最小路径的下标 定义为bool型全局变量
*最后遍历并打印d数组
*/
#include<stdio.h>
#include<stdio.h>
#include<string.h>
#define VERTEXNUM 100//顶点数
#define NAME_SIZE 255//字符串的最大长度
#define MAX_INT 32762//权值最大值
#define OK 1
#define ERROR 0
typedef int Statu;//自定义状态数据类型
typedef char* VertexType;//顶点值数据类型
typedef int ArcType;//权值的数据类型
typedef struct amgraph
{
VertexType vex[VERTEXNUM];//顶点数组
ArcType Arcs[VERTEXNUM][VERTEXNUM];//权值的二维数组
int n;//图的顶点数
int e;//图的边数
}AMGraph;//有向网的数据结构
int path[VERTEXNUM];//记录上一步节点
int D[VERTEXNUM];//记录源节点到每一个顶点的最短路径
int s[VERTEXNUM]={0};//用于记录该节点是否已经求得最短路径长度
Statu create_DN(AMGraph*G);//创建有向网
int Locate_vex(AMGraph*G,VertexType vex);//定位函数
void test();//测试函数
void shorttestpath_DIJ(AMGraph*G,int n);//迪杰斯特拉算法
void main()
{
test();//测试函数
}
Statu create_DN(AMGraph*G)//创建有向网
{
int i,