題意:給乙個無向圖,邊權為正值,求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 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...