我是個對電腦科學有興趣的學生,我會貼上我的學習歷程及生活心情,也請大大們多多指教。 :)

2014年5月3日 星期六

[ZOJ] 2760 How Many Shortest Path

題目網址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760

題意: 給定一個帶權有向圖,且指定起點、終點,問從起點至終點最多能有幾條不重疊的最短路徑。



解法: 先用floyd warshall算出任兩點間的最短路徑,接著判斷原圖中的每條邊(a,b)是否滿足"(s,a)的最短距離+(a,b)的權重+(b,t)的最短距離==(s,t)的最短距離",若滿足則代表此邊是最短路徑的邊,將此邊加入新的網路圖中且容量為一,最後只需要在新建的網路圖中找出最大流即可。

TAG: Flow Network, Floyd Warshall, MaxFlow, Ford-Fulkerson

注意: 測資輸入的 adjacency matrix 中,對自己走到自己竟然會包含非0的值,所以必須給定edge[i][j] = 0, i == j。

程式碼:

沒有留言:

張貼留言

任何意見都樂意傾聽