Untitled
unknown
java
3 years ago
1.6 kB
6
Indexable
private boolean isCyclicUtil(String i, Map<String,Boolean> visited, Map<String,Boolean> recStack, Map<String,String> adjMap) { if (recStack.contains(i)) return true; if (visited.contains(i)) return false; visited.put(i,true) recStack.put(i,true) List<String> children = adjMap.get(i); for (String c: children) if (isCyclicUtil(c, visited, recStack)) return true; recStack[i] = false; return false; } public static void main(String[] transactions, String[] queries){ Map<String,List<String>> adjMap = new HashMap<>(); for(String[] q : transactions){ List<String> li = adjMap.getOrDefault(q[0], new ArrayList<>()); li.add(q[1]); adjMap.put(q[0],li); } List<Map.Entry<String,List<String>> liEntry = new ArrayList(adjMap.entrySet()); boolean[] result = new boolean[queries.length]; for(String[] q : queries){ Map<String,Boolean> visited = new HashMap<>(); Map<String,Boolean> recStack = new HashMap<>(); String user1 = q[0]; String user2 = q[1]; if (isCyclicUtil(user1, visited, recStack, adjMap) && visited.containsKey(user2)) result[i] = true; else result[i] = false; i++; } return result; }
Editor is loading...