hdu 1874暢通工程續一秒 最短路

2021-08-13 17:50:08 字數 723 閱讀 7545

題意:給乙個無向圖,邊權為正值,求s,t間最短路,可能s,t間沒有路,此時輸出-1

注意這個圖可能有重邊,查詢時可能有s=t的情況

使用半個spfa做的這題(沒用判負圈),用乙個並查集判斷st是否有路。因為存的是鄰接表,多重邊都會被算進去,不需要加特殊操作,點都初始化了也直接解決了s=t的問題。

#include using namespace std;

int v,e,s,t;

vector< pair> ve[300];

int vis[300],fa[300],d[300];

const int maxn=20000;

void init()

int cs,ce,cw;

for(int i=1;i<=e;i++)

cin>>s>>t;

s++;

t++;

d[s]=0;

}int froot(int v)

void spfa()

{ queueq;

q.push(s);

vis[s]=1;

while(!q.empty())

{int u=q.front();

q.pop();

vis[u]=0;

for(int i=0;i>v>>e)

{init();

spfa();

if(froot(t)!=s)cout<<"-1"<

hdu 1874 暢通工程續

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

HDU 1874 暢通工程續

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

HDU 1874 暢通工程續

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