我有一个编程任务(不是家庭作业.),我必须在图中找到桥梁.我自己做了一些工作,但无法想出任何令人满意的东西.所以我用Google搜索,我找到了一些东西,但我无法理解它所呈现的算法.有人可以看看这段代码并给我一个解释.
public Bridge(Graph G) {
low = new int[G.V()];
pre = new int[G.V()];
for (int v = 0; v < G.V(); v++) low[v] = -1;
for (int v = 0; v < G.V(); v++) pre[v] = -1;
for (int v = 0; v < G.V(); v++)
if (pre[v] == -1)
dfs(G, v, v);
}
public int components() { return bridges + 1; }
private void dfs(Graph G, int u, int v) {
pre[v] = cnt++;
low[v] = pre[v];
for (int …Run Code Online (Sandbox Code Playgroud)