【藍橋-大試牛刀7-最短路專場】一點提示

XavierTse發表於2024-03-09

最短路1

求個全源最短路。

看資料範圍\(1\le n\le100\),直接floyd秒掉就行。

最短路2

先判負環,用Bellman-Ford,當然建議用佇列最佳化版的(國內一般叫spfa)。

雖然說spfa複雜度不穩定,但也一定比樸素版要快一點的。

第二步還是求全源最短路,但是這個題的資料範圍到了\(1\le n\le3\times10^3\),很明顯floyd會爆掉。

所以考慮對每一個點跑dijkstra。

想詳細學習的話可以去查一下johnson全源最短路

最短路3

這個題我用bfs做的,說一下大概思路

從1點出發,遍歷所有出邊到達的點

如果一個點沒有訪問過,加入佇列,d[y] = d[x] + 1,cnt[y] = cnt[x]

如果訪問過了,判斷這個條件d[y] == d[x] + 1,如果成立就cnt[y] += cnt[x],否則跳過

相關文章