Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. public boolean canFinish(int numCourses, int[][] prerequisites) {
  2. if(numCourses<=0)
  3. return false;
  4. //use hashmap to store adjList
  5. HashMap<Integer, ArrayList<Integer>> map=new HashMap<Integer, ArrayList<Integer>>();
  6. for(int i=0;i<prerequisites.length;i++){
  7. if(map.containsKey(prerequisites[i][1])){
  8. ArrayList<Integer> list=map.get(prerequisites[i][1]);
  9. list.add(prerequisites[i][0]);
  10. map.put(prerequisites[i][1], list);
  11. }
  12. else{
  13. ArrayList<Integer> list = new ArrayList<Integer>();
  14. list.add(prerequisites[i][0]);
  15. map.put(prerequisites[i][1],list);
  16. }
  17. }
  18.  
  19. int[] visit=new int[numCourses];
  20. for(int i=0;i<numCourses;i++){
  21. if(!dfshelper(map,visit,i))
  22. return false;
  23. }
  24. return true;
  25. }
  26. public boolean dfshelper(HashMap<Integer, ArrayList<Integer>> map, int[] visit, int vertex){
  27. visit[vertex]=1; //visiting
  28. if(map.containsKey(vertex)){
  29. for(int u: map.get(vertex)){
  30. if(visit[u]==1)
  31. return false;//have cycle
  32. if(visit[u]==0 && !dfshelper(map,visit,u))
  33. return false;
  34. }
  35. }
  36. visit[vertex]=2;//visited
  37. return true;
  38.  
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement