Source code for submission s1007

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.Arrays;
  7. import java.util.HashMap;
  8. import java.util.HashSet;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Set;
  12.  
  13. /*
  14.  * To change this template, choose Tools | Templates
  15.  * and open the template in the editor.
  16.  */
  17. /**
  18.  *
  19.  * @author cteam94
  20.  */
  21. public class FN {
  22.  
  23. Integer[] a;
  24. // Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
  25. // Map<Integer, Boolean> nav = new HashMap<Integer, Boolean>();
  26.  
  27. public static void main(String[] args) throws IOException {
  28.  
  29.  
  30. while ((new FN()).readLine(br));
  31. }
  32.  
  33. public boolean readLine(BufferedReader br) throws IOException {
  34. String line = br.readLine();
  35. if (line == null) {
  36. return false;
  37. }
  38.  
  39. String[] sp = line.split(" ");
  40. int n1 = Integer.parseInt(sp[0]);
  41. int n2 = Integer.parseInt(sp[1]);
  42.  
  43. a = new Integer[n1+1];
  44. int pows = 0;
  45. boolean b = false;
  46.  
  47. for (int i = 1; i <= n1; i++) {
  48. a[i] = 0;
  49. }
  50.  
  51. for (int i = 0; i < n2; i++) {
  52. String ln = br.readLine();
  53. String[] sp2 = ln.split(" ");
  54. int u = Integer.parseInt(sp2[0]);
  55. int v = Integer.parseInt(sp2[1]);
  56.  
  57. if (a[u] == 0) {
  58. for (int j = 1; j < n1+1; j++) {
  59. if (a[j] == 1) pows++;
  60. a[j] = 0;
  61. }
  62. if (pows == 4) b = true;
  63.  
  64. }
  65. a[u]++;
  66. a[v]++;
  67. }
  68.  
  69. for (int j = 1; j < n1 + 1; j++) {
  70. if (a[j] == 1) {
  71. pows++;
  72. }
  73. a[j] = 0;
  74. }
  75.  
  76.  
  77. if (pows == 4) {
  78. b = true;
  79. }
  80.  
  81. System.out.println(b ? "YES" : "NO");
  82.  
  83. return true;
  84. }
  85.  
  86. }
  87.  
  88.  
  89. // public boolean readLine(BufferedReader br) throws IOException {
  90. // String line = br.readLine();
  91. // if (line == null) {
  92. // return false;
  93. // }
  94. //
  95. // map = new HashMap<Integer, Set<Integer>>();
  96. //
  97. // String[] sp = line.split(" ");
  98. // int n1 = Integer.parseInt(sp[0]);
  99. // int n2 = Integer.parseInt(sp[1]);
  100. //
  101. // for (int i = 1; i <= n1; i++) {
  102. // map.put(i, new HashSet<Integer>());
  103. // nav.put(i, Boolean.FALSE);
  104. // }
  105. //
  106. // for (int i = 0; i < n2; i++) {
  107. // String ln = br.readLine();
  108. // String[] sp2 = ln.split(" ");
  109. // int u = Integer.parseInt(sp2[0]);
  110. // int v = Integer.parseInt(sp2[1]);
  111. //
  112. // Set<Integer> l = map.get(u);
  113. // l.add(v);
  114. //
  115. // l = map.get(v);
  116. // l.add(u);
  117. // }
  118. //
  119. // //System.out.println(map);
  120. //
  121. // while (true) {
  122. // int pows = 0;
  123. // int x = -1;
  124. // for (Map.Entry<Integer, Boolean> entry : nav.entrySet()) {
  125. // Integer integer = entry.getKey();
  126. // Boolean boolean1 = entry.getValue();
  127. // if (!boolean1) {
  128. // x = integer;
  129. // break;
  130. // }
  131. // }
  132. // if (x == -1) {
  133. // break;
  134. // }
  135. //
  136. // pows = pows(x);
  137. // //System.out.println(pows);
  138. // if (pows == 4) {
  139. // System.out.println("YES");
  140. // return true;
  141. // }
  142. // }
  143. //
  144. // System.out.println("NO");
  145. //
  146. // return true;
  147. // }
  148. //
  149. // public boolean isPow(int x) {
  150. // if (map.get(x).size() == 1) {
  151. // return true;
  152. // }
  153. // return false;
  154. // }
  155. //
  156. // public int pows(int x) {
  157. // nav.put(x, Boolean.TRUE);
  158. //
  159. // int pows = 0;
  160. // if (isPow(x)) {
  161. // pows++;
  162. // }
  163. //
  164. //
  165. // Set<Integer> sus = map.get(x);
  166. // for (Integer v : sus) {
  167. // if (!nav.get(v)) pows += pows(v);
  168. // }
  169. // return pows;
  170. // }
  171. //}
  172.  
  173. //
  174. // for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
  175. // int c = 0;
  176. // Integer integer = entry.getKey();
  177. // Set<Integer> list = entry.getValue();
  178. // for (Integer v : list) {
  179. // if (isPow(v)) {
  180. // c++;
  181. // }
  182. //
  183. // }
  184. // if (c == 4) {
  185. // System.out.println("YES");
  186. // return true;
  187. // }
  188. // }
  189.  

Diff to submission s855

FN.java

--- c5.s855.cteam094.fn.java.0.FN.java
+++ c5.s1007.cteam094.fn.java.0.FN.java
@@ -4,4 +4,5 @@
 import java.io.InputStreamReader;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -20,6 +21,7 @@
 public class FN {
 
-    Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
-    Map<Integer, Boolean> nav = new HashMap<Integer, Boolean>();
+    Integer[] a;
+//    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 {
@@ -29,5 +31,5 @@
         while ((new FN()).readLine(br));
     }
-
+    
     public boolean readLine(BufferedReader br) throws IOException {
         String line = br.readLine();
@@ -36,15 +38,16 @@
         }
 
-        map = new HashMap<Integer, Set<Integer>>();
-
         String[] sp = line.split(" ");
         int n1 = Integer.parseInt(sp[0]);
         int n2 = Integer.parseInt(sp[1]);
-
+        
+        a = new Integer[n1+1];
+        int pows = 0;
+        boolean b = false;
+        
         for (int i = 1; i <= n1; i++) {
-            map.put(i, new HashSet<Integer>());
-            nav.put(i, Boolean.FALSE);
+            a[i] = 0;
         }
-
+        
         for (int i = 0; i < n2; i++) {
             String ln = br.readLine();
@@ -52,65 +55,120 @@
             int u = Integer.parseInt(sp2[0]);
             int v = Integer.parseInt(sp2[1]);
-
-            Set<Integer> l = map.get(u);
-            l.add(v);
-
-            l = map.get(v);
-            l.add(u);
+            
+            if (a[u] == 0) {
+                for (int j = 1; j < n1+1; j++) {
+                    if (a[j] == 1) pows++;
+                    a[j] = 0;
+                }
+                if (pows == 4) b = true;
+                
+            } 
+            a[u]++;
+            a[v]++;
         }
-
-        //System.out.println(map);
-
-        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;
+        
+            for (int j = 1; j < n1 + 1; j++) {
+                if (a[j] == 1) {
+                    pows++;
                 }
+                a[j] = 0;
             }
-            if (x == -1) {
-                break;
-            }
-
-            pows = pows(x);
-            //System.out.println(pows);
+            
+           
             if (pows == 4) {
-                System.out.println("YES");
-                return true;
+                b = true;
             }
-        }
-
-        System.out.println("NO");
-
+        
+        System.out.println(b ? "YES" : "NO");
+     
         return true;
     }
+    
+}
 
-    public boolean isPow(int x) {
-        if (map.get(x).size() == 1) {
-            return true;
-        }
-        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;
-    }
-}
+//    public boolean readLine(BufferedReader br) throws IOException {
+//        String line = br.readLine();
+//        if (line == null) {
+//            return false;
+//        }
+//
+//        map = new HashMap<Integer, Set<Integer>>();
+//
+//        String[] sp = line.split(" ");
+//        int n1 = Integer.parseInt(sp[0]);
+//        int n2 = Integer.parseInt(sp[1]);
+//
+//        for (int i = 1; i <= n1; i++) {
+//            map.put(i, new HashSet<Integer>());
+//            nav.put(i, Boolean.FALSE);
+//        }
+//
+//        for (int i = 0; i < n2; i++) {
+//            String ln = br.readLine();
+//            String[] sp2 = ln.split(" ");
+//            int u = Integer.parseInt(sp2[0]);
+//            int v = Integer.parseInt(sp2[1]);
+//
+//            Set<Integer> l = map.get(u);
+//            l.add(v);
+//
+//            l = map.get(v);
+//            l.add(u);
+//        }
+//
+//        //System.out.println(map);
+//
+//        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 (x == -1) {
+//                break;
+//            }
+//
+//            pows = pows(x);
+//            //System.out.println(pows);
+//            if (pows == 4) {
+//                System.out.println("YES");
+//                return true;
+//            }
+//        }
+//
+//        System.out.println("NO");
+//
+//        return true;
+//    }
+//
+//    public boolean isPow(int x) {
+//        if (map.get(x).size() == 1) {
+//            return true;
+//        }
+//        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;
+//    }
+//}
 
 //