dijkstra:常规算法
#include<bits/stdc++.h>
#define N 505
#define INF 0x3f3f3f3f
using namespace std;
int n,m,s,t;
int num[N]; //救援队数量
int pre[N]; //前一个结点
int D[N]; //距离
int e[N][N]; //边
int flag[N];
int people[N]; //召集的最多救援队数量
int cnt[N]; //最短路径条数
void init()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j)
e[i][j]=0;
else
e[i][j]=e[j][i]=INF;
}
}
}
void dijkstra()
{
for(int i=0;i<n;i++)
{
D[i]=e[s][i];
pre[i]=s;
}
D[s]=0;
pre[s]=-1;
//flag[s]=1; //注意此处不置为标记过
people[s]=num[s];
cnt[s]=1; //最短路径的条数
for(int i=0;i<n;i++)
{
int Min=INF+1;
int Minnum=-1;
for(int j=0;j<n;j++)
{
if(D[j]<Min&

本文介绍了使用Dijkstra算法解决城市间紧急救援路径问题,包括常规算法实现和堆优化的详细步骤,旨在优化救援效率。
最低0.47元/天 解锁文章
城市间紧急救援&spm=1001.2101.3001.5002&articleId=124202457&d=1&t=3&u=f3262983774643a69b8a4eb03ecd6433)

被折叠的 条评论
为什么被折叠?



