暢通工程續(djk 優先佇列)

2021-08-23 12:40:45 字數 1012 閱讀 8932

#include #include #include using namespace std;

typedef pairpii;

#define n 100011

#define m 1000011

#define inf 0x3f3f3f3f

struct edge

edge(int _to,int _val,int _next)

}edge[m<<1]; //如果是雙向圖的話,邊的數量是題目中描述的2倍

int n,m;//n是圖中的點數,m 是圖中的邊數

int head[n],top;

void init(int n)

void add(int u,int v,int val)

void getmap(int m)//建圖

}int dis[n];

void djk(int st,int ed)

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

}int main()

return 0;

}

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

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

input

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

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

對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從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

暢通工程續

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

暢通工程續

b 暢通工程續 crawling in process.crawling failed time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 1874 description...

暢通工程續

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