HDU 1874 暢通工程續

2021-09-11 07:50:04 字數 1535 閱讀 6566

problem - 1874

半年沒看圖論了。

單源最短路問題常用堆優化的dijkstra。 時間複雜度o(m

logn

)o(mlogn)

o(mlog

n)圖中存在負邊只能用spfa(佇列優化的bellman-ford)。 時間複雜度o(k

m)

o(km)

o(km

),在稠密圖中退化為o(n

m)

o(nm)

o(nm)

堆優化的dijkstra

#include

#include

#include

using namespace std;

const

int maxn =

205;

vectorint,

int>

> e[maxn]

;int dist[maxn]

;int n, m;

// n個點,m條邊

int s, e;

//起始點,終止點

void

init()

}void

dijkstra()

);while

(!q.

empty()

));}

}}}int

main()

);e[b]

.push_back()

;}cin >> s >> e;

dijkstra()

;if(dist[e]

==1e9

) cout <<

"-1"

<< endl;

else cout << dist[e]

<< endl;

}return0;

}

spfa

#include

#include

#include

using namespace std;

const

int maxn =

205;

vectorint,

int>

> e[maxn]

;int dist[maxn]

, inq[maxn]

;int n, m;

// n個點,m條邊

int s, e;

//起始點,終止點

void

init()

}void

spfa()

}}}int

main()

);e[b]

.push_back()

;}cin >> s >> e;

spfa()

;if(dist[e]

==1e9

) cout <<

"-1"

<< endl;

else cout << dist[e]

<< endl;

}return0;

}

hdu 1874 暢通工程續

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

HDU 1874 暢通工程續

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

HDU 1874 暢通工程續

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