Skip to content

Commit 12edcb4

Browse files
committed
reformatting
1 parent 1fe8089 commit 12edcb4

File tree

8 files changed

+1003
-63
lines changed

8 files changed

+1003
-63
lines changed

.idea/workspace.xml

Lines changed: 68 additions & 48 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.subham.ta.backtracking;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Subsets {
7+
static class Solution {
8+
public List<List<Integer>> subsets(int[] nums) {
9+
int len = nums.length;
10+
int powerLen = 1 << len;
11+
12+
List<List<Integer>> result = new ArrayList<>();
13+
for (int i = 0; i < powerLen; ++i) {
14+
int j = i;
15+
int k = 0;
16+
List<Integer> set = new ArrayList<>();
17+
while (j > 0) {
18+
if ((j & 1) == 1) {
19+
set.add(nums[k]);
20+
}
21+
++k;
22+
j >>= 1;
23+
}
24+
result.add(set);
25+
}
26+
return result;
27+
}
28+
}
29+
30+
public static void main(String[] args) {
31+
System.out.println(new Solution().subsets(new int[] {1, 2}));
32+
}
33+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.subham.ta.graph;
2+
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.Map;
6+
import java.util.Set;
7+
import java.util.concurrent.atomic.AtomicInteger;
8+
9+
public final class ArticulationPointOnDirectedGraph {
10+
public static <K, V> Set<Vertex<K, V>> findArticulationPoint(final Graph<K, V> graph) {
11+
final Map<Vertex<K, V>, Integer> highTime = new HashMap<>();
12+
final Map<Vertex<K, V>, Integer> lowTime = new HashMap<>();
13+
final Set<Vertex<K, V>> articulationPoints = new HashSet<>();
14+
final Set<Vertex<K, V>> visitedSet = new HashSet<>();
15+
final AtomicInteger timer = new AtomicInteger(0);
16+
17+
Vertex<K, V> root = graph.getVertexSet().iterator().next();
18+
DFS(timer, graph, root, null, highTime, lowTime, articulationPoints, visitedSet);
19+
20+
return articulationPoints;
21+
}
22+
23+
private static <K, V> void DFS(
24+
final AtomicInteger timer,
25+
final Graph<K, V> graph,
26+
final Vertex<K, V> currentVertex,
27+
final Vertex<K, V> parent,
28+
final Map<Vertex<K, V>, Integer> highTime,
29+
final Map<Vertex<K, V>, Integer> lowTime,
30+
final Set<Vertex<K, V>> articulationPoints,
31+
final Set<Vertex<K, V>> visitedSet) {
32+
33+
if (visitedSet.contains(currentVertex)) {
34+
return;
35+
}
36+
37+
visitedSet.add(currentVertex);
38+
int currentTime = timer.incrementAndGet();
39+
40+
highTime.put(currentVertex, currentTime);
41+
lowTime.put(currentVertex, currentTime);
42+
43+
for (final Vertex<K, V> children : currentVertex.getNeighbors()) {
44+
if (children.equals(parent)) {
45+
continue;
46+
}
47+
DFS(timer, graph, children, currentVertex, highTime, lowTime, articulationPoints, visitedSet);
48+
}
49+
50+
// calculate low time for current vertex.
51+
for (final Vertex<K, V> children : currentVertex.getNeighbors()) {
52+
if (children.equals(parent)) {
53+
continue;
54+
}
55+
lowTime.put(
56+
currentVertex,
57+
Math.min(lowTime.getOrDefault(children, Integer.MAX_VALUE), lowTime.get(currentVertex)));
58+
}
59+
}
60+
61+
public static void main(String[] args) {
62+
Graph<Character, Character> graph = new Graph<>(false);
63+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('A', 'B'));
64+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('A', 'C'));
65+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('C', 'B'));
66+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('C', 'D'));
67+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('E', 'D'));
68+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('E', 'G'));
69+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('E', 'F'));
70+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('G', 'F'));
71+
graph.addEdge(Edge.createSimpleEdgeUnWeighted('H', 'F'));
72+
73+
System.out.println(findArticulationPoint(graph));
74+
}
75+
}

0 commit comments

Comments
 (0)