Guest User

Untitled

a guest
Jan 17th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. /*
  2. *
  3. *
  4. [
  5. [3, 0],
  6. [0, 4],
  7. [5, 0],
  8. [2, 1],
  9. [1, 4],
  10. [2, 3],
  11. [5, 2]
  12. ]
  13. *
  14. *
  15. */
  16. int [] getChildren(int s, int[][] roads, int p){
  17.  
  18. List<Integer> children = new ArrayList<>();
  19. for(int i = 0; i < roads.length; i++){
  20. if(roads[i][0] == s && roads[i][1] != p){
  21. children.add(roads[i][1]);
  22. }
  23.  
  24. if(roads[i][1] == s && roads[i][0] != p){
  25. children.add(roads[i][0]);
  26. }
  27. }
  28.  
  29. return children
  30. .stream()
  31. .mapToInt(Integer::intValue)
  32. .toArray();
  33.  
  34. }
  35.  
  36. boolean efficientRoadNetwork(int n, int[][] roads) {
  37.  
  38.  
  39. // 0 to n
  40. for(int i = 0; i < n; i++){
  41. int total = 0;
  42. int[] children = getChildren(i, roads, -1);
  43. System.out.println("children");
  44.  
  45. // this is a one level tree
  46. if(children.length + 1 == n){
  47. return true;
  48. }
  49.  
  50. total += children.length;
  51. Arrays.stream(children).forEach(System.out::println);
  52.  
  53. // check second level only
  54. for(int j = 0; j < children.length; j++){
  55. int[] innerChildren = getChildren(children[j],roads,i);
  56.  
  57. System.out.println("inner children");
  58.  
  59. total += innerChildren.length;
  60. }
  61.  
  62. if(total < n - 1){
  63. return false;
  64. }
  65.  
  66. }
  67.  
  68.  
  69. return true;
  70.  
  71. }
Add Comment
Please, Sign In to add comment