用 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]]
广告