HDU 1874 暢通工程續

2021-06-07 19:24:45 字數 1686 閱讀 2264

problem description

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

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

input

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

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

output

對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.

sample input

3 3

0 1 1

0 2 3

1 2 1

0 23 1

0 1 1

1 2

sample output

2

-1

//bellman:0ms

#include#define inf 1000000000

#define v 205

#define e 1005

int n,m,pre[v],edge[e][3];

int dist[v];

int relax(int u,int v,int c)

return 0;

}int bellman(int src)

dist[src]=0;

for(i=0;i<=n;i++)

if(!flag)break;

} for(j=0;j

djikatra:15ms

#include#include#define maxn 205

#define inf 1000000000

int matrix[maxn][maxn];

int dist[maxn];

char used[maxn];

int n,m;

void init()

}used[flag]=1;

for(j=0;j<=n;j++)

}}int main()

scanf("%d%d",&src,&end);

if(src==end)

djikstra(src);

if(dist[end]!=inf)

printf("%d\n",dist[end]);

else printf("-1\n");

}return 0;

}

floyd 46ms

#include#define maxn 205

#define inf 1000000000

int matrix[maxn][maxn];

int n,m;

void init()

}}void floyd()}}

}}int main()

scanf("%d%d",&start,&end);

if(start==end)

floyd();

if(matrix[start][end]!=inf)

printf("%d\n",matrix[start][end]);

else printf("-1\n");

}}

hdu 1874 暢通工程續

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

HDU 1874 暢通工程續

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

hdu 1874 暢通工程續

水題,但是要注意處理重邊的情況,因為一開始沒處理,結果wa了很多次。include include define inimax 0x7f7f7f7f int dist 210 int s 210 int m,n int graph 205 205 void dijk int begin dist b...