diff --git a/src/main/java/com/williamfiset/algorithms/graphtheory/ArticulationPointsAdjacencyList.java b/src/main/java/com/williamfiset/algorithms/graphtheory/ArticulationPointsAdjacencyList.java index ea4cf20cf..f119beb20 100644 --- a/src/main/java/com/williamfiset/algorithms/graphtheory/ArticulationPointsAdjacencyList.java +++ b/src/main/java/com/williamfiset/algorithms/graphtheory/ArticulationPointsAdjacencyList.java @@ -56,14 +56,16 @@ private void dfs(int root, int at, int parent) { visited[at] = true; low[at] = ids[at] = id++; + int components = 0; List edges = graph.get(at); for (Integer to : edges) { if (to == parent) continue; if (!visited[to]) { + components++; dfs(root, to, at); low[at] = min(low[at], low[to]); - if (ids[at] <= low[to]) { + if (parent == -1 && components > 1 || parent != -1 && ids[at] <= low[to]) { isArticulationPoint[at] = true; } } else {