LeetCode-5426、重新規劃路線-中等

clover_my發表於2020-05-31

LeetCode-5426、重新規劃路線-中等

n 座城市,從 0 到 n-1 編號,其間共有 n-1 條路線。因此,要想在兩座不同城市之間旅行只有唯一一條路線可供選擇(路線網形成一顆樹)。去年,交通運輸部決定重新規劃路線,以改變交通擁堵的狀況。路線用 connections 表示,其中 connections[i] = [a, b] 表示從城市 a 到 b 的一條有向路線。今年,城市 0 將會舉辦一場大型比賽,很多遊客都想前往城市 0 。請你幫助重新規劃路線方向,使每個城市都可以訪問城市 0 。返回需要變更方向的最小路線數。題目資料 保證 每個城市在重新規劃路線方向後都能到達城市 0 。

示例 1:

輸入:n = 6, connections = [[0,1],[1,3],[2,3],[4,0],[4,5]]
輸出:3
解釋:更改以紅色顯示的路線的方向,使每個城市都可以到達城市 0 。

示例 2:

輸入:n = 5, connections = [[1,0],[1,2],[3,2],[3,4]]
輸出:2
解釋:更改以紅色顯示的路線的方向,使每個城市都可以到達城市 0 。

示例 3:

輸入:n = 3, connections = [[1,0],[2,0]]
輸出:0

提示:

  • 2 <= n <= 5 * 10^4
  • connections.length == n-1
  • connections[i].length == 2
  • 0 <= connections[i][0], connections[i][1] <= n-1
  • connections[i][0] != connections[i][1]

 

程式碼:

class Solution:
    def minReorder(self, n: int, connections: List[List[int]]) -> int:
        ans = 0
        stack = set([0])
        for a, b in connections:
            if a in stack:
                stack.add(b)
                ans += 1
            elif b in stack:
                stack.add(a)
        return ans

相關文章