在图中,如何确定两个顶点是否形成一座桥,以及一旦桥断开连接,哪些顶点将成为哪个子图的一部分?

In a graph, how do you determine if two vertices form a bridge and which vertices will be part of which subgraph once the bridge is disconnected?

我正在使用邻接表在 C# 中创建我的图形。

在此图中,#4 和#5 形成一座桥,断开连接时将创建两个子图:

我的问题分为两部分:

  1. 如何确定#4 和#5 是否形成桥?
  2. 如何找出哪些顶点属于哪个子图,以便我可以为每个子图创建新图?

您可以在 O(V+E) , read here

中找到图表中的所有桥梁

之后,标记桥并使用 DFS 找到连接的组件:

for each node:
        if (not visited)
            components++
            dfs(node)

在dfs遍历中不要通过标记为桥的边。