关于使用Dijkstra最短路径算法实现北京部分地铁查找最短路径

一、需求分析. 1

1.问题描述. 1

参照某城市地铁路线图结构,编写程序实现以某站为起始点求该点到其他站点最短路径长度途径的站点

2.基本要求. 1

(1)所含站点(即顶点)不少于20,站与站的路线(即边)不少于40。尽可能选取地铁路线交叉较多的区域。采用适当的存储结构实现带权有向图的存储。

(2)可以读取地铁中各站点的信息站与站之间的距离,建立地铁路线图的存储模块,图的存储采用邻接矩阵或邻接表,并能显示出来。

(3)采用Dijkstra算法计算给定的两顶点间的最短距离

(4)输出顶点间的最短距离途径的站点

3.逻辑结构和存储结构的选择. 1

图,邻接矩阵

二、概要设计. 1

邻接矩阵生成代码

#include <stdio.h>

#define INF 32767 // 定义∞
#define MAXVEX 100

int main()
{
    int i, j, k, vexnum, edgenum, n;
    int arc[MAXVEX][MAXVEX];
    printf("请依次输入顶点数、边数:");
    scanf("%d %d", &vexnum, &edgenum);
    for (i = 0; i < vexnum; i++)
    {
        for (j = 0; j < vexnum; j++)
        {
            arc[i][j] = INF;
            arc[i][i] = 0;
        }
    }

    for (n = 0, i = 0, j = 0; n < edgenum; n++)
    {
        printf("请输入连接边的两个点(不要重复,0起始下标)空格分开:");
        scanf("%d %d", &i, &j);
        putchar('\n');
        printf("请输入权值:");
        scanf("%d", &k);
        arc[i][j] = k;
        arc[j][i] = k;
        putchar('\n');
    }

    printf("========邻接矩阵=======\n");
    for (i = 0; i < vexnum; i++)
    {
        printf("{");
        for (j = 0; j < vexnum; j++)
        {
            printf("%d", arc[i][j]);
            if (j != vexnum - 1)
            {
                printf(",");
            }
        }
        printf("},");
        putchar('\n');
    }
}

生成邻接矩阵的第一个元素编号是以0开头不是以1开头,不要弄错了

1.抽象数据类型. 1

typedef struct
{	int no;						//顶点编号
	InfoType info;				//顶点其他信息
} VertexType;					//顶点类型
typedef struct
{	int edges[MAXV][MAXV];		//邻接矩阵数组
	int n,e;					//顶点数,边数
	VertexType vexs[MAXV];		//存放顶点信息
} MatGraph;						//完整的图邻接矩阵类型

//以下定义邻接表类型
typedef struct ANode
{	int adjvex;					//该边的邻接点编号
	struct ANode *nextarc;		//指向下一条边的指针
	int weight;					//该边的相关信息,如权值(用整型表示)
} ArcNode;						//边结点类型
typedef struct Vnode
{	InfoType info;				//顶点其他信息
	ArcNode *firstarc;			//指向第一条边
} VNode;						//邻接表头结点类型
typedef struct 
{	VNode adjlist[MAXV];		//邻接表头结点数组
	int n,e;					//图中顶点数n和边数e
} AdjGraph;	

三、算法详细设计. 1

//图的基本运算算法
#include <stdio.h>
#include <malloc.h>
//图的两种存储结构
#define INF 32767 //定义∞
#define MAXV 100  //最大顶点个数
typedef char InfoType;

//以下定义邻接矩阵类型
typedef struct
{
    int no;        //顶点编号
    InfoType info; //顶点其他信息
} VertexType;      //顶点类型
typedef struct
{
    int edges[MAXV][MAXV]; //邻接矩阵数组
    int n, e;              //顶点数,边数
    VertexType vexs[MAXV]; //存放顶点信息
} MatGraph;                //完整的图邻接矩阵类型



void Point_Name(int Point)
{
    switch (Point)
    {
    case 0:
        printf("昌平东关");
        break;
    case 1:
        printf("北邵洼");
        break;
    case 2:
        printf("南邵");
        break;
    case 3:
        printf("沙河高教园");
        break;
    case 4:
        printf("沙河");
        break;
    case 5:
        printf("巩华城");
        break;
    case 6:
        printf("朱辛庄");
        break;
    case 7:
        printf("育知路");
        break;
    case 8:
        printf("平西府");
        break;
    case 9:
        printf("回龙观东大街");
        break;
    case 10:
        printf("霍营");
        break;
    case 11:
        printf("育新");
        break;
    case 12:
        printf("西小口");
        break;
    case 13:
        printf("永泰庄");
        break;
    case 14:
        printf("林萃桥");
        break;
    case 15:
        printf("森林公园南门");
        break;
    case 16:
        printf("奥林匹克公园");
        break;
    case 17:
        printf("北沙滩");
        break;
    case 18:
        printf("六道口");
        break;
    case 19:
        printf("清华东路西口");
        break;
    case 20:
        printf("奥体中心");
        break;
    case 21:
        printf("安立路");
        break;
    case 22:
        printf("大屯路东");
        break;
    case 23:
        printf("惠新西街北口");
        break;
    case 24:
        printf("北苑路北");
        break;
    case 25:
        printf("立水桥南");
        break;
    case 26:
        printf("立水桥");
        break;
    case 27:
        printf("天通苑南");
        break;
    case 28:
        printf("天通苑");
        break;
    case 29:
        printf("天通苑北");
        break;
    case 30:
        printf("北苑");
        break;
    case 31:
        printf("望京西");
        break;
    case 32:
        printf("关庄");
        break;
    case 33:
        printf("望京");
        break;
    case 34:
        printf("生命科学园");
        break;
    case 35:
        printf("西二旗");
        break;
    case 36:
        printf("上地");
    case 37:
        printf("五道口");
    case 38:
        printf("龙泽");
    case 39:
        printf("回龙观");
        break;
    }
}

void CreateMat(MatGraph &g, int A[MAXV][MAXV], int n, int e) //创建图的邻接矩阵
{
    int i, j;
    g.n = n;
    g.e = e;
    for (i = 0; i < g.n; i++)
        for (j = 0; j < g.n; j++)
            g.edges[i][j] = A[i][j];
}
void DispMat(MatGraph g) //输出邻接矩阵g
{
    int i, j;
    for (i = 0; i < g.n; i++)
    {
        for (j = 0; j < g.n; j++)
            if (g.edges[i][j] != INF)
                printf("%4d", g.edges[i][j]);
            else
                printf("%4s", "∞");
        printf("\n");
    }
}


void Dispath(MatGraph g, int dist[], int path[], int S[], int v, int end)
//输出从顶点v出发的所有最短路径
{
    int i, j, k;
    int apath[MAXV], d;       //存放一条最短路径(逆向)及其顶点个数
    for (i = 0; i < g.n; i++) //循环输出从顶点v到i的路径
        if (S[i] == 1 && i != v && i == end)
        {
            printf("从[");
            Point_Name(v);
            printf("]到[");
            Point_Name(end);
            printf("]的最短路径长度为:%d公里\t路径为:", dist[i]);
            d = 0;
            apath[d] = i; //添加路径上的终点
            k = path[i];
            if (k == -1) //没有路径的情况
                printf("无路径\n");
            else //存在路径时输出该路径
            {
                while (k != v)
                {
                    d++;
                    apath[d] = k;
                    k = path[k];
                }
                d++;
                apath[d] = v;                //添加路径上的起点
                Point_Name(apath[d]);    //先输出起点
                for (j = d - 1; j >= 0; j--){//再输出其他顶点
                    printf("->");
                    Point_Name(apath[j]);
                }
                printf("\n");
            }
            
        }
}


void Dijkstra(MatGraph g, int v, int end) // Dijkstra算法
{
    int dist[MAXV], path[MAXV];
    int S[MAXV]; // S[i]=1表示顶点i在S中, S[i]=0表示顶点i在U中
    int mindist, i, j, u;
    for (i = 0; i < g.n; i++)
    {
        dist[i] = g.edges[v][i]; //距离初始化
        S[i] = 0;                // S[]置空
        if (g.edges[v][i] < INF) //路径初始化
            path[i] = v;         //顶点v到顶点i有边时,置顶点i的前一个顶点为v
        else
            path[i] = -1; //顶点v到顶点i没边时,置顶点i的前一个顶点为-1
    }
    S[v] = 1;
    path[v] = 0;                  //源点编号v放入S中
    for (i = 0; i < g.n; i++) //循环直到所有顶点的最短路径都求出
    {
        mindist = INF;            // mindist置最大长度初值
        for (j = 0; j < g.n; j++) //选取不在S中(即U中)且具有最小最短路径长度的顶点u
            if (S[j] == 0 && dist[j] < mindist)
            {
                u = j;
                mindist = dist[j];
            }
        S[u] = 1;                 //顶点u加入S中
        for (j = 0; j < g.n; j++) //修改不在S中(即U中)的顶点的最短路径
            if (S[j] == 0)
                if (g.edges[u][j] < INF && dist[u] + g.edges[u][j] < dist[j])
                {
                    dist[j] = dist[u] + g.edges[u][j];
                    path[j] = u;
                }
    }
    Dispath(g, dist, path, S, v, end); //输出最短路径

}


int main()
{
    MatGraph g;
    printf("   地铁图为:\n");
    printf("0昌平东关 \n");
    printf("     \\  \n");
    printf("      ↓ \n");
    printf("     1北邵洼 \n");
    printf("      ↓ \n");
    printf("     2南邵 \n");
    printf("      ↓ \n");
    printf("   3沙河高教园 \n");
    printf("      ↓ \n");
    printf("    4沙河 \n");
    printf("      ↓ \n");
    printf("   5巩华城                                                 29天通苑北\n");
    printf("      ↓                                                          |\n");
    printf("   6朱辛庄------7育知路------8平西府                         28天通苑\n");
    printf("      |                          \\                               |   \n");
    printf("   34生命科学园                9回龙观东大街                 27天通苑南\n");
    printf("      |                           |                               |\n");
    printf("   35西二旗--38龙泽--39回龙观--10霍营-------------------------26立水桥-----------\n");
    printf("      |                           |                               |              \\\n");
    printf("   36上地                      11育新                             |               \\\n");
    printf("      |                           |                               |               30北苑\n");
    printf("   37五道口                   12西小口                            |                  |\n");
    printf("                                  |                               |                  |\n");
    printf("                             13永泰庄                        25立水桥南              |\n");
    printf("                                  |                               |                  |\n");
    printf("                             14林萃桥                             |                  |\n");
    printf("                                    \\                        24北苑路北              |\n");
    printf("                                 15森林公园南门                   |                  |\n");
    printf("                                       |                          |                  | \n");
    printf("    19清华东路西口-18六道口-17北沙滩-16奥林匹克公园--21安立路--22大屯路东-32关庄---31望京西----33望京\n");
    printf("                                       |                          |            \n");
    printf("                                  20奥体中心              23惠新西街北口\n");
    putchar('\n');

    int A[MAXV][MAXV] = {
        {0, 8, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {8, 0, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 5, 0, 3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 3, 0, 3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 3, 0, 4, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 4, 0, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 5, 0, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 5, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 5, 0, 6, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 6, 0, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 5, 0, 4, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 4, 0, 1, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 12},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 1, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 3, 0, 2, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 2, 0, 1, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 1, 0, 8, 32767, 32767, 2, 6, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 8, 0, 7, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 7, 0, 8, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 8, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 2, 32767, 32767, 32767, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 6, 32767, 32767, 32767, 32767, 0, 7, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 7, 0, 3, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 4, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 3, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 5, 32767, 0, 3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 3, 0, 3, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 15, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 3, 0, 3, 32767, 32767, 14, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 3, 0, 4, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 4, 0, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 5, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 14, 32767, 32767, 32767, 0, 10, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 10, 0, 7, 11, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 4, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 7, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 11, 32767, 0, 32767, 32767, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 5, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 6, 32767, 32767, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 6, 0, 7, 32767, 8, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 7, 0, 6, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 6, 0, 32767, 32767},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 8, 32767, 32767, 0, 9},
        {32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 12, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 9, 0},
    };
    int n = 40, e = 42;
    CreateMat(g, A, n, e);
	//DispMat(g);
    
    printf("请输入两点序号:");
    int v, end;
    scanf("%d %d",&v,&end);
    printf("最短路径如下:\n", v);
    Dijkstra(g, v, end);
    return 1;
}

程序运行截图

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值