HDU 1874 暢通工程續 四種最短路演算法

2021-07-16 20:04:43 字數 2923 閱讀 2595

暢通工程續

time limit:1000ms memory limit:32768kb 64bit io format:%i64d & %i64u

submit

status

description

某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。

現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。

input

本題目包含多組資料,請處理到檔案結束。

每組資料第一行包含兩個正整數n和m(0

//迪傑斯特拉-dijkstra

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

int n,m,a,b,c;

int v[1005],next[1005],w[1005],first[1005],cnt,dis[1005];

void init()

void addedge(int a,int b,int c)

void dijkstra(int source)}}

}int main()

scanf("%d%d",&a,&b);

dijkstra(a);

printf("%d\n",dis[b]);

}return0;}

//弗洛伊德-floyd

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

int n,m,a,b,c;

int dis[1005][1005];

void init()

void addedge(int a,int b,int c)

void floyd()

int main()

scanf("%d%d",&a,&b);

floyd();

printf("%d\n",dis[a][b]==inf?-1:dis[a][b]);

}return0;}

//貝爾曼-福特演算法 - bellman-ford

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

int n,m,a,b,c;

int u[1005],v[1005],w[1005],cnt,dis[1005];

void init()

void addedge(int a,int b,int c)

void bellmanford()

int main()

scanf("%d%d",&a,&b);

dis[a]=0;

bellmanford();

printf("%d\n",dis[b]==inf?-1:dis[b]);

}return0;}

//shortest path faster algorithm - spfa

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

int n,m,a,b,c;

int v[1005],next[1005],w[1005],first[1005],cnt,dis[1005];

bool inque[1005];

void init()

void addedge(int a,int b,int c)

void spfa(int source)}}

}int main()

scanf("%d%d",&a,&b);

spfa(a);

printf("%d\n",dis[b]==inf?-1:dis[b]);

}return

0;}

hdu 1874 暢通工程續

題目 就是裸的單源最短路。做的時候還是遇到了一些錯誤。比如題目上說的,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。應該在輸入的時候就要更新a b的最短距離。還有一開始開了個n 0x7fffffff 這種題肯定是不行的。因為這個數和其他數相加...

HDU 1874 暢通工程續

problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...

HDU 1874 暢通工程續

problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...