C语言——最短路径问题(Dijkstra算法)
优点——适用范围广,本代码属于公式型代码,可随意更换数据,适合零基础同学。
主要思路:
主要思路:
1.用一个二维数组存放带权有向图的邻接矩阵;
2.基于Dijkstra算法分别申请三个数组,distance[], path[], used[]分别记录从起点到其余各点的最短距离,到目标结点路径上的前一个结点,到图中某个结点是否已找到最短路径;
3.逐渐确定从源点到图中各结点的最短路径,直至结束;
最短路径例题:
如下图所示,求最短经。
<fn
代码:
// #include "stdlib.h "
#include<stdio.h>
#define SIZE 110
#define INF 1000000;
int map[SIZE][SIZE]; //邻接矩阵存储
int len[SIZE]; //d[i]表示源点到i这个点的距离
int visit[SIZE]; //节点是否被访问
int n,m,j,pos,ans,temp;
int temp = INF;
int dijkstra(int from, int to){
//从源点到目标点
int i;
for(i = 1 ; i <= n ; i ++){
//初始化
visit[i] = 0; //一开始每个点都没被访问
len