Skip to content

Commit 1f63336

Browse files
authored
Created Bridge.java
This class finds all bridges in given Graph.
1 parent 3c5ee91 commit 1f63336

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

‎Bridge/Bridge.java‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Bridge{
2+
private static int time;
3+
private static int[] disc, low;
4+
private static boolean[] visited;
5+
6+
public static boolean[] bridges(int[][][] graphWithEdgeInfo, int EdgeCount){
7+
int NumberOfNodes = graphWithEdgeInfo.length;
8+
9+
time = -1;
10+
disc = new int[NumberOfNodes];
11+
low = new int[NumberOfNodes];
12+
visited = new boolean[NumberOfNodes];
13+
java.util.Arrays.fill(low, 2*NumberOfNodes);
14+
15+
boolean[] isBridge = new boolean[EdgeCount];
16+
for(int i = 0; i< NumberOfNodes; i++)if(!visited[i] && graphWithEdgeInfo[i] != null)bridgeUtil(graphWithEdgeInfo, isBridge, i, -1);
17+
return isBridge;
18+
}
19+
20+
private static void bridgeUtil(int[][][] g, boolean[] isBridge, int u, int p){
21+
visited[u] = true;
22+
disc[u] = low[u] = ++time;
23+
24+
for(int[] edge: g[u]){
25+
int v = edge[0], edgeIndex = edge[1];
26+
if(v == p)continue;
27+
28+
if(visited[v])
29+
low[u] = Math.min(low[u], disc[v]);
30+
else{
31+
bridgeUtil(g, isBridge, v, u);
32+
low[u] = Math.min(low[u], low[v]);
33+
34+
if(low[v] > disc[u])isBridge[edgeIndex] = true;
35+
}
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)