DFS:寻路问题(Roads)
生活随笔
收集整理的這篇文章主要介紹了
DFS:寻路问题(Roads)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
POJ 1724 尋路問題(Roads)
描述
將由數字1到N標記的城市用單行道相連,每條道路都有兩個相關參數:道路長度和需要為道路支付的通行費(用硬幣的數量表示)。鮑勃和愛麗絲過去住在城市1里。在注意到愛麗絲在他們喜歡玩的紙牌游戲中作弊后,鮑勃和她分手了,并決定搬到N城市去。他想盡快趕到那里,但他手頭沒錢。
我們想幫助Bob找到從城市1到城市N的最短路徑,只要他有足夠的錢。
輸入
輸入的第一行包含整數K, 0 <= K <= 10000, Bob在途中可以花費的最大硬幣數。
第二行包含整數N, 2 <= N <= 100,城市總數。
第三行包含整數R, 1 <= R <= 10000,道路總數。
下面的每一行通過指定由單個空白字符分隔的整數S, D, L和T來描述一條路:
-
S為源城市,1 <= S <= N
-
D為目的地城市,1 <= D <= N
-
L是道路長度,1 <= L <= 100
-
T為通行費(用硬幣數量表示),0 <= T <=100
注意:不同的道路可能有相同的源城市和目的地城市。
輸出
輸出唯一 一行應該包含從城市1到城市N的最短路徑的總長度并且到達城市N的總通行費小于或等于K個硬幣。
如果這樣的路徑不存在,則輸出-1。
樣例輸入
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
樣例輸出
11
解題思路
從城市 1開始深度優先遍歷整個圖,找到所有能到達 N 的走法,
選一個最優的。
剪枝操作:
于L的走法,就可以直接放棄,不用走到底了
后續的搜索中,再次走到k時,如果總路費恰好為m,且此時的路徑長度已經超過
minL[k][m],則不必再走下去了。
總結
以上是生活随笔為你收集整理的DFS:寻路问题(Roads)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用MDB查看变量的值
- 下一篇: html表单实验总结,html表单知识的