#24522: 超級新手的解題想法


bubble60324@gmail.com (賢仔)

學校 : 高雄市立前鎮高級中學
編號 : 120822
來源 : [1.174.192.154]
最後登入時間 :
2022-09-22 09:21:26
b108. 1. 銀河帝國旅行社 -- 93學年度全國資訊學科能力競賽 | From: [36.237.76.101] | 發表日期 : 2021-03-01 21:35

DFS

使用Adjacency list(很好懂的儲存圖的方法,不懂的可以去查一下)來存取題目給的星球(連結起來是一棵樹)

存取的時候我使用了map<int,vector<int>>

再用兩種DFS分別是

Step1:(DFS1):由上往下找最深子節點  

Step2:(DFS2):由前一個DFS1得到的最深子節點往上推(在每一個父節點往下找不同的子節點,我個人是重複利用DFS1往下搜)

Step3:一直利用DFS2和DFS1來求 最初找到的最深子節點與任一點 的最長距離

*有可能父節點沒有其他子節點,這時候就將該根節點當成新的所求子節點進行DFS2

*DFS1的重複利用可能有點難懂,最根本就是從誰開始這個DFS1(誰開始往下找)。 最深子節點:根節點(相當於帝國首都) 由下節點往下找的子節點:父節點(相當於主星)

*如果這些都看不懂的新手,可以先去練一下其他DFS的題目。

心得:

這樣子的基礎題使用相互疊用的DFS對於我來說很難寫,但只要腦子能夠構築一次,用所學的方法存取、設計條件閘、回朔其實就很好解了。

加油!!!

 

 
ZeroJudge Forum