Go to diff to previous submission
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package fq; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; /** * * @author drevenak3 */ public class FQ { private static ArrayList<Integer> smerniky = new ArrayList<Integer>(); private static ArrayList<Integer> okolia = new ArrayList<Integer>(); /** * @param args the command line arguments */ int n, u, v, hlavny; while (scan.hasNext()) { smerniky.clear(); okolia.clear(); n = scan.nextInt(); hlavny = scan.nextInt(); int[][] pole = new int[n + 1][n + 1]; for (int i = 1; i <= n-1; i++) { u = scan.nextInt(); v = scan.nextInt(); int c=scan.nextInt(); pole[u][v] = c; pole[v][u] = c; } int p=0; for(int i=1;i<=n;++i){ smerniky.add(p); for(int j=1;j<=n;++j){ if(pole[i][j]!=0){ okolia.add(j); ++p; } } } smerniky.add(p); int e=0; for(int i=smerniky.get(hlavny-1);i<smerniky.get(hlavny);++i){ e+=enrgiaVetvy(pole,hlavny,okolia.get(i)); } } } public static int enrgiaVetvy(int [][]paPole,int paZ,int paDo){ int cestaPrisiel=paPole[paDo][paZ]; int cestaZ=0; for(int i=smerniky.get(paDo-1);i<smerniky.get(paDo);++i){ if(paZ!=okolia.get(i)) cestaZ+=enrgiaVetvy(paPole,paDo,okolia.get(i)); } if(cestaZ==0){ return cestaPrisiel; } } }
--- c5.s987.cteam083.fr.java.0.FQ.java +++ c5.s1071.cteam083.fr.java.0.FQ.java @@ -7,4 +7,5 @@ import java.io.File; import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.Scanner; @@ -15,4 +16,6 @@ public class FQ { + private static ArrayList<Integer> smerniky = new ArrayList<Integer>(); + private static ArrayList<Integer> okolia = new ArrayList<Integer>(); /** * @param args the command line arguments @@ -20,6 +23,11 @@ public static void main(String[] args) { Scanner scan = new Scanner(System.in); + + + int n, u, v, hlavny; while (scan.hasNext()) { + smerniky.clear(); + okolia.clear(); n = scan.nextInt(); hlavny = scan.nextInt(); @@ -32,10 +40,19 @@ pole[v][u] = c; } - int e=0; + int p=0; for(int i=1;i<=n;++i){ - if(pole[hlavny][i]!=0){ - e+=enrgiaVetvy(pole,hlavny,i); + smerniky.add(p); + for(int j=1;j<=n;++j){ + if(pole[i][j]!=0){ + okolia.add(j); + ++p; + } } } + smerniky.add(p); + int e=0; + for(int i=smerniky.get(hlavny-1);i<smerniky.get(hlavny);++i){ + e+=enrgiaVetvy(pole,hlavny,okolia.get(i)); + } System.out.println(e); } @@ -43,10 +60,9 @@ public static int enrgiaVetvy(int [][]paPole,int paZ,int paDo){ - int cestaPrisiel=paPole[paDo][paZ]; + int cestaPrisiel=paPole[paDo][paZ]; int cestaZ=0; - for(int i=1;i<paPole.length;++i){ - if(paPole[paDo][i]!=0&&i!=paZ){ - cestaZ+=enrgiaVetvy(paPole,paDo,i); - } + for(int i=smerniky.get(paDo-1);i<smerniky.get(paDo);++i){ + if(paZ!=okolia.get(i)) + cestaZ+=enrgiaVetvy(paPole,paDo,okolia.get(i)); } if(cestaZ==0){