L2-001 紧急救援 (基于Dijkstra算法,改进添加最优路径记录)C语言
看了网上许多有关Dijkstra的算法,利用C语言的寥寥无几,加上还能记录最短路径的那就更少了,所以我决定用C语言实现该算法的改进(在做这道题之前我不知道Dijkstra算法,我想到的一个方法,后来才发现竟然是Dijkstra算法的雏形,请允许我小小的自恋一下 ^ - ^*
首先先看题目
看到这道题的时候,第一个念头肯定就是想到使用' 图 '来保存城市的地图。
生成图之后,第二步 想到的是在众多'寻找最短路径'方法中
找到一个最合适的方法,该方法应具有添加'记录最短路径'的功能
下面上代码
#include<stdio.h>
void Dijkstra();
#define fin 999999
int world[1000][1000]; //用二维数组存放地图
int book[100000]; //用来标志该节点是否被使用
int people[501]; //用来存放每个城市的救援人数
int dis[10000]; //Dijkstra的核心,用来存放起始位置到每个位置的最小值
int peomany[100000]; //用来存放该路径有多少救援人员
int chance[100000]; //记录有几个最佳路程
int father[10000]; //记录前驱节点
int city_num,way_num,begin,end;
int main()
{
int i,j,a,b,c;
scanf("%d %d %d %d",&city_num,&way_num,&begin,&end);
for(i=0;i<city_num