最短路径迪杰斯特拉模板
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径迪杰斯特拉模板相关的知识,希望对你有一定的参考价值。
#include<iostream>
using namespace std;
#define MAX 0x3f3f3f3f
#define max 205
int map[max][max],sign[max];
int main()
{
int n,m,i,j,a,b,d;
while(cin>>n>>m)
{
for(i=0;i<n;i++)
{
sign[i]=0;
for(j=0;j<n;j++)
{
if(i==j) map[i][j]=0; //注意
else map[i][j]=MAX;
}
}
while(m--)
{
cin>>a>>b>>d;
if(map[a-1][b-1]>d) map[a-1][b-1]=map[b-1][a-1]=d; //注意
}
// cin>>a>>b;
int min,u;
a=0;
b=n-1;
sign[a]=1;
//接下来是精髓
for(i=0;i<n;i++)
{
min=MAX;
for(j=0;j<n;j++)
if(!sign[j]&&min>map[a][j])
{
min=map[a][j];
u=j;
}
sign[u]=1;
for(j=0;j<n;j++)
if(!sign[j]&&map[u][j]<MAX)
{
if(min+map[u][j]<map[a][j])
map[a][j]=min+map[u][j];
}
}
if(map[a][b]<MAX) cout<<map[a][b]<<endl;
else cout<<"-1"<<endl;
}
return 0;
}
/**************************************
Problem id : SDUT OJ 2143
User name : 大领主
Result : Accepted
Take Memory : 564K
Take Time : 30MS
Submit Time : 2016-05-26 08:34:59
**************************************/
以上是关于最短路径迪杰斯特拉模板的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想代码演示答题规范)
LeetCode 1337. 矩阵中战斗力最弱的 K 行/215. 数组中的第K个最大元素(topk快排堆排)/743. 网络延迟时间(最短路径迪杰斯特拉,弗洛伊德)