問題描述 :
給定乙個機票的字串二維陣列 [from, to],子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從 jfk(甘迺迪國際機場)出發的先生,所以該行程必須從 jfk 開始。
說明:如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 [「jfk」, 「lga」] 與 [「jfk」, 「lgb」] 相比就更小,排序更靠前
所有的機場都用三個大寫字母表示(機場**)。
假定所有機票至少存在一種合理的行程。
示例 1:
輸入: [[「muc」, 「lhr」], [「jfk」, 「muc」], [「sfo」, 「sjc」], [「lhr」, 「sfo」]]
輸出: [「jfk」, 「muc」, 「lhr」, 「sfo」, 「sjc」]
示例 2:
輸入: [[「jfk」,「sfo」],[「jfk」,「atl」],[「sfo」,「atl」],[「atl」,「jfk」],[「atl」,「sfo」]]
輸出: [「jfk」,「atl」,「jfk」,「sfo」,「atl」,「sfo」]
解釋: 另一種有效的行程是 [「jfk」,「sfo」,「atl」,「jfk」,「atl」,「sfo」]。但是它自然排序更大更靠後。
可使用以下main函式:
int
main()
vector res=
solution()
.finditinerary
(tickets)
;for
(int i=
0; isize()
; i++
)return0;
}
輸入說明 :
首先輸入機票張數m,
然後輸入m行,每行兩個字串,表示機場的**,中間以空格分隔。
輸出說明 :
輸出結果
輸入範例:
5jfk sfo
jfk atl
sfo atl
atl jfk
atl sfo
輸出範例 :
jfk atl jfk sfo atl sfo
void
dfs(string from, map>
&from_to, vector
&ans)
ans.
push_back
(from)
;//一定倒著存,將孤立節點放在最後訪問。題目保證一定會有路徑
}//尤拉路徑
vector
finditinerary
(vector>
&tickets)
vector ans;
dfs(
"jfk"
, from_to, ans)
;reverse
(ans.
begin()
,ans.
end())
;return ans;
//逆序輸出
}
332 重新安排行程
給定乙個機票的字串二維陣列 from,to 子陣列中的兩個成員分別表示飛機出發和降落的機場地點,對該行程進行重新規劃排序。所有這些機票都屬於乙個從jfk 甘迺迪國際機場 出發的先生,所以該行程必須從 jfk 出發。說明 如果存在多種有效的行程,你可以按字元自然排序返回最小的行程組合。例如,行程 jf...
Hierholzer演算法 重新安排行程
尤拉跡是指一條包含圖中所有邊的一條路徑,該路徑中所有的邊會且僅會出現一次。乙個無向圖中包含尤拉跡,當且僅當下面兩條性質同時滿足 而乙個有向圖包含尤拉跡,當且僅當下面兩條性質同時滿足 hierholzer演算法用於在連通圖尋找尤拉跡,其流程非常簡單。從乙個可能的起點出發,進行深度優先搜尋,但是每次沿著...
332 重新安排行程
題目描述 如果存在多種有效的行程,請你按字元自然排序返回最小的行程組合。例如,行程 jfk lga 與 jfk lgb 相比就更小,排序更靠前 所有的機場都用三個大寫字母表示 機場 假定所有機票至少存在一種合理的行程。所有的機票必須都用一次 且 只能用一次。示例 1 輸入 muc lhr jfk m...