用 Python 反轉有向圖的程式
假設我們有一個有向圖,我們需要找到它的逆圖,也就是說,如果一條邊從 u 指向 v,那麼現在它從 v 指向 u。這裡的輸入將是鄰接表,如果有 n 個節點,那麼節點將是 (0, 1, ..., n-1)。
所以,如果輸入如下
那麼輸出將是
要解決這個問題,我們將按照以下步驟進行 −
- ans := 一個包含 n 個不同列表的列表,其中 n 是頂點的數量
- 對於圖中的每個索引 i 和鄰接列表 l,執行
- 對於列表中的每個 x,執行
- 在 ans[x] 的末尾插入 i
- 對於列表中的每個 x,執行
- 返回 ans
讓我們看看以下實現來加深理解 −
示例
class Solution: def solve(self, graph): ans = [[] for _ in graph] for i, l in enumerate(graph): for x in l: ans[x].append(i) return ans ob = Solution() graph = [[1,2],[4],[4],[1,2],[3]] print(ob.solve(graph))
輸入
[[1,2],[4],[4],[1,2],[3]]
輸出
[[], [0, 3], [0, 3], [4], [1, 2]]
廣告