Source code for submission s855

Go to diff to previous submission

FN.java

  1.  
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.HashMap;
  7. import java.util.HashSet;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Set;
  11.  
  12. /*
  13.  * To change this template, choose Tools | Templates
  14.  * and open the template in the editor.
  15.  */
  16. /**
  17.  *
  18.  * @author cteam94
  19.  */
  20. public class FN {
  21.  
  22. Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
  23. Map<Integer, Boolean> nav = new HashMap<Integer, Boolean>();
  24.  
  25. public static void main(String[] args) throws IOException {
  26.  
  27.  
  28. while ((new FN()).readLine(br));
  29. }
  30.  
  31. public boolean readLine(BufferedReader br) throws IOException {
  32. String line = br.readLine();
  33. if (line == null) {
  34. return false;
  35. }
  36.  
  37. map = new HashMap<Integer, Set<Integer>>();
  38.  
  39. String[] sp = line.split(" ");
  40. int n1 = Integer.parseInt(sp[0]);
  41. int n2 = Integer.parseInt(sp[1]);
  42.  
  43. for (int i = 1; i <= n1; i++) {
  44. map.put(i, new HashSet<Integer>());
  45. nav.put(i, Boolean.FALSE);
  46. }
  47.  
  48. for (int i = 0; i < n2; i++) {
  49. String ln = br.readLine();
  50. String[] sp2 = ln.split(" ");
  51. int u = Integer.parseInt(sp2[0]);
  52. int v = Integer.parseInt(sp2[1]);
  53.  
  54. Set<Integer> l = map.get(u);
  55. l.add(v);
  56.  
  57. l = map.get(v);
  58. l.add(u);
  59. }
  60.  
  61. //System.out.println(map);
  62.  
  63. while (true) {
  64. int pows = 0;
  65. int x = -1;
  66. for (Map.Entry<Integer, Boolean> entry : nav.entrySet()) {
  67. Integer integer = entry.getKey();
  68. Boolean boolean1 = entry.getValue();
  69. if (!boolean1) {
  70. x = integer;
  71. break;
  72. }
  73. }
  74. if (x == -1) {
  75. break;
  76. }
  77.  
  78. pows = pows(x);
  79. //System.out.println(pows);
  80. if (pows == 4) {
  81. System.out.println("YES");
  82. return true;
  83. }
  84. }
  85.  
  86. System.out.println("NO");
  87.  
  88. return true;
  89. }
  90.  
  91. public boolean isPow(int x) {
  92. if (map.get(x).size() == 1) {
  93. return true;
  94. }
  95. return false;
  96. }
  97.  
  98. public int pows(int x) {
  99. nav.put(x, Boolean.TRUE);
  100.  
  101. int pows = 0;
  102. if (isPow(x)) {
  103. pows++;
  104. }
  105.  
  106.  
  107. Set<Integer> sus = map.get(x);
  108. for (Integer v : sus) {
  109. if (!nav.get(v)) pows += pows(v);
  110. }
  111. return pows;
  112. }
  113. }
  114.  
  115. //
  116. // for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
  117. // int c = 0;
  118. // Integer integer = entry.getKey();
  119. // Set<Integer> list = entry.getValue();
  120. // for (Integer v : list) {
  121. // if (isPow(v)) {
  122. // c++;
  123. // }
  124. //
  125. // }
  126. // if (c == 4) {
  127. // System.out.println("YES");
  128. // return true;
  129. // }
  130. // }
  131.  

Diff to submission s694

FN.java

--- c5.s694.cteam094.fn.java.0.FN.java
+++ c5.s855.cteam094.fn.java.0.FN.java
@@ -21,4 +21,5 @@
 
     Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
+    Map<Integer, Boolean> nav = new HashMap<Integer, Boolean>();
 
     public static void main(String[] args) throws IOException {
@@ -43,4 +44,5 @@
         for (int i = 1; i <= n1; i++) {
             map.put(i, new HashSet<Integer>());
+            nav.put(i, Boolean.FALSE);
         }
 
@@ -60,15 +62,22 @@
         //System.out.println(map);
 
-        for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
-            int c = 0;
-            Integer integer = entry.getKey();
-            Set<Integer> list = entry.getValue();
-            for (Integer v : list) {
-                if (isPow(v)) {
-                    c++;
+        while (true) {
+            int pows = 0;
+            int x = -1;
+            for (Map.Entry<Integer, Boolean> entry : nav.entrySet()) {
+                Integer integer = entry.getKey();
+                Boolean boolean1 = entry.getValue();
+                if (!boolean1) {
+                    x = integer;
+                    break;
                 }
-
             }
-            if (c == 4) {
+            if (x == -1) {
+                break;
+            }
+
+            pows = pows(x);
+            //System.out.println(pows);
+            if (pows == 4) {
                 System.out.println("YES");
                 return true;
@@ -86,3 +96,36 @@
         return false;
     }
+
+    public int pows(int x) {
+        nav.put(x, Boolean.TRUE);
+
+        int pows = 0;
+        if (isPow(x)) {
+            pows++;
+        }
+
+        
+        Set<Integer> sus = map.get(x);
+        for (Integer v : sus) {
+            if (!nav.get(v)) pows += pows(v);
+        }
+        return pows;
+    }
 }
+
+//
+//        for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
+//            int c = 0;
+//            Integer integer = entry.getKey();
+//            Set<Integer> list = entry.getValue();
+//            for (Integer v : list) {
+//                if (isPow(v)) {
+//                    c++;
+//                }
+//
+//            }
+//            if (c == 4) {
+//                System.out.println("YES");
+//                return true;
+//            }
+//        }