Source code for submission s954

Go to diff to previous submission

Fr.java

  1. import java.util.Scanner;
  2.  
  3.  
  4. public class Fr {
  5.  
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8.  
  9. int n;
  10. int main;
  11.  
  12. int a;
  13. int b;
  14. int v;
  15.  
  16. while(sc.hasNextInt()){
  17. a = 0;
  18. b = 0;
  19.  
  20. n = sc.nextInt();
  21. main = sc.nextInt();
  22.  
  23.  
  24. int[][] mat = new int[n+1][n+1];
  25.  
  26. for (int i = 0; i < n-1; i++) {
  27. a = sc.nextInt();
  28. b = sc.nextInt();
  29. v = sc.nextInt();
  30.  
  31. mat[a][b] = v;
  32. mat[b][a] = v;
  33. }
  34.  
  35. int sumV = 0;
  36. for (int i = 1; i < n+1; i++) {
  37. if (i != main && mat[main][i] != 0){
  38. sumV += getValueS(mat, i, main);
  39. }
  40. }
  41. System.out.println(sumV);
  42.  
  43. }
  44. sc.close();
  45. }
  46.  
  47.  
  48. static int getValueS(int[][] mat, int s, int r){
  49. int sumV = 0;
  50. for (int i = 1; i < mat.length; i++) {
  51. if (i != r && mat[i][s] != 0){
  52. sumV += getValueS(mat, i ,s);
  53. }
  54. }
  55.  
  56. if (sumV != 0 && sumV < mat[r][s]){
  57. return sumV;
  58. }
  59. return mat[r][s];
  60. }
  61.  
  62. }

Diff to submission s876

Fr.java

--- c5.s876.cteam055.fr.java.0.Fr.java
+++ c5.s954.cteam055.fr.java.0.Fr.java
@@ -1,10 +1,4 @@
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.Queue;
 import java.util.Scanner;
 
-import javax.management.Query;
-
 
 public class Fr {
@@ -15,11 +9,9 @@
                 int n;
                 int main;
-                ArrayList<Node> nodes;
                 
                 int a;
                 int b;
                 int v;
-                Node tempNode;
-                Node father;
+
                 while(sc.hasNextInt()){ 
                         a = 0;
@@ -28,16 +20,8 @@
                         n = sc.nextInt();
                         main = sc.nextInt();
-                        
-                        nodes = null;
-                        nodes = new ArrayList<Node>(n+1);
+
                         
                         int[][] mat = new int[n+1][n+1];                
                         
-                        for (int i = 0; i < n+1; i++) {
-                                
-                                nodes.add(new Node(i));
-                                
-                        }
-                        
                         for (int i = 0; i < n-1; i++) {
                                 a = sc.nextInt();
@@ -49,66 +33,12 @@
                         }
                         
-                        Queue<Integer> q = new LinkedList<Integer>();
-                        q.add(main);
-                        
-                        
-                        int[] used = new int[n+1]; 
-                        int nodeID;
-                        used[main] = 1;
-//                      printMatrix(mat);
-                        nodes.get(main).setValue(Integer.MAX_VALUE);
-                        while(!q.isEmpty()){
-                                nodeID = q.poll();
-                                for (int i = 1; i < n+1; i++) {
-                                        if (used[i] == 0 && i != nodeID && mat[nodeID][i] != 0){
-                                                used[i] = 1;
-                                                q.add(i);
-                                                
-                                                tempNode = nodes.get(i);
-                                                tempNode.value = mat[nodeID][i];
-                                                nodes.get(nodeID).addChild(tempNode);
-//                                              System.out.println(nodeID+" "+i);
-                                        }
+                        int sumV = 0;
+                        for (int i = 1; i < n+1; i++) {
+                                if (i != main && mat[main][i] != 0){
+                                        sumV += getValueS(mat, i, main);
                                 }
                         }
-//                      System.out.println();
-                        
-                        System.out.println(getNodeValue(nodes.get(main)));
-                        
-                        
-                        
-                        
-                        
-                        
-                        
-//                      for (int i = 0; i < n+1; i++) {
-//                              nodes.add(new Node(i));
-//                      }
-////                    System.out.println(nodes.size());
-//                      
-//                      nodes.get(main).setValue(Integer.MAX_VALUE);
-////                    nodes.add(main, new Node(main, Integer.MAX_VALUE));
-//                      
-//                      for (int i = 0; i < n-1; i++) {
-//                              a = sc.nextInt();
-//                              b = sc.nextInt();
-//                              v = sc.nextInt();
-//                              
-//                              father = nodes.get(a);
-//                              if (father == null){
-//                                      tempNode = new Node(a, v);
-//                                      nodes.set(a, tempNode);
-//                                      
-//                                      father = nodes.get(b);
-//                                      father.addChild(tempNode);
-//                              }else{
-//                                      tempNode = new Node(b, v);
-//                                      nodes.set(b, tempNode);
-//                                      
-//                                      father.addChild(tempNode);
-//                              }
-//                      }
-//                      
-//                      System.out.println(getNodeValue(nodes.get(main)));
+                        System.out.println(sumV);
+        
                 }
                 sc.close();
@@ -116,48 +46,16 @@
         
         
-        static void printMatrix(int[][]array){
-                for (int i = 0; i < array.length; i++) {
-                        System.out.println(Arrays.toString(array[i]));
-                }
-        }
-        
-        static int getNodeValue(Node node){
-                if (node.child.size() == 0){
-                        return node.value;
-                }
-                
+        static int getValueS(int[][] mat, int s, int r){
                 int sumV = 0;
-                for (Node n : node.child) {
-                        sumV += getNodeValue(n);
+                for (int i = 1; i < mat.length; i++) {
+                        if (i != r && mat[i][s] != 0){
+                                sumV += getValueS(mat, i ,s);
+                        }
                 }
                 
-                if (node.value > sumV){
-                        node.value = sumV;
-                        return node.value;
+                if (sumV != 0 && sumV < mat[r][s]){
+                        return sumV;
                 }
-                return node.value;
-        }
-}
-
-class Node{
-        int id;
-        int value;
-        LinkedList<Node> child;
-        Node ancestor;
-        
-        public Node(int id) {
-                super();
-                this.id = id;
-
-                child = new LinkedList<Node>();
-//              this.ancestor = ancestor;
-        }
-
-        void addChild(Node node){
-                this.child.add(node);
-        }
-        
-        void setValue(int value){
-                this.value = value;
+                return mat[r][s];
         }