Source code for submission s1156

Hadice.java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package hadice;
  6.  
  7. /**
  8.  *
  9.  * @author kormanec4
  10.  */
  11. public class Hadice {
  12.  
  13. /**
  14.   * @param args the command line arguments
  15.   */
  16. public static void main(String[] args) {
  17. new Program();
  18. }
  19. }
  20.  

Program.java

download edit
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package hadice;
  6.  
  7. import java.util.ArrayList;
  8. import java.util.Scanner;
  9.  
  10. /**
  11.  *
  12.  * @author kormanec4
  13.  */
  14. class Program {
  15.  
  16. private Scanner sc = new Scanner(System.in);
  17. private Uzol hlavny;
  18. private ArrayList<Uzol> rad;
  19. private ArrayList<Integer> vysledky;
  20.  
  21. public Program() {
  22. vysledky = new ArrayList();
  23. while (sc.hasNextInt()) {
  24. rad = new ArrayList();
  25. int pocUzlov = sc.nextInt();
  26. hlavny = new Uzol(sc.nextInt(), null, 1001);
  27. rad.add(hlavny);
  28. int[][] nacitanie = new int[pocUzlov - 1][3];
  29.  
  30. for (int i = 0; i < (pocUzlov - 1); i++) {
  31. nacitanie[i][0] = sc.nextInt();
  32. nacitanie[i][1] = sc.nextInt();
  33. nacitanie[i][2] = sc.nextInt();
  34. }
  35. while (!rad.isEmpty()) {
  36. Uzol aktualny = rad.get(0);
  37. for (int[] prem : nacitanie) {
  38. if (prem[0] == aktualny.getNazov()) {
  39. Uzol uzol = new Uzol(prem[1], aktualny, prem[2]);
  40. rad.add(uzol);
  41. aktualny.pridajPotomka(uzol);
  42. prem[1] = 0;
  43. } else if (prem[1] == aktualny.getNazov()) {
  44. Uzol uzol = new Uzol(prem[0], aktualny, prem[2]);
  45. rad.add(uzol);
  46. aktualny.pridajPotomka(uzol);
  47. prem[0] = 0;
  48. }
  49. }
  50. rad.remove(0);
  51. }
  52. vysledky.add(hlavny.prejdiPotomkov());
  53.  
  54. }
  55. for (Integer vysledok : vysledky) {
  56. System.out.println(vysledok);
  57.  
  58. }
  59. }
  60. }
  61.  

Uzol.java

download edit
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package hadice;
  6.  
  7. import java.util.ArrayList;
  8.  
  9. /**
  10.  *
  11.  * @author kormanec4
  12.  */
  13. class Uzol {
  14.  
  15. private int nazov;
  16. private int odpor;
  17. private Uzol predok;
  18. private ArrayList<Uzol> potomkovia = new ArrayList();
  19.  
  20. public Uzol(int nazov, Uzol predok, int odpor) {
  21. this.nazov = nazov;
  22. this.predok = predok;
  23. this.odpor = odpor;
  24. }
  25.  
  26. public int getOdpor() {
  27. return odpor;
  28. }
  29.  
  30. public void setOdpor(int odpor) {
  31. this.odpor = odpor;
  32. }
  33.  
  34. public Uzol getPredok() {
  35. return predok;
  36. }
  37.  
  38. public ArrayList<Uzol> getPotomkovia() {
  39. return potomkovia;
  40. }
  41.  
  42. public void pridajPotomka(Uzol potomok) {
  43. potomkovia.add(potomok);
  44. }
  45.  
  46. public boolean jeKonecny() {
  47. return potomkovia.isEmpty();
  48. }
  49.  
  50. int getNazov() {
  51. return nazov;
  52. }
  53.  
  54. void vymazPotomkov() {
  55.  
  56. while (!potomkovia.isEmpty()) {
  57. potomkovia.remove(0);
  58. }
  59. }
  60.  
  61. // void prejdiPotomkov() {
  62. // if (potomkovia.isEmpty()) {
  63. // } else {
  64. // boolean pom = true;
  65. // for (Uzol uzol : potomkovia) {
  66. // uzol.prejdiPotomkov();
  67. // }
  68. // if (pom) {
  69. // int odporPotomkov = 0;
  70. // for (Uzol uzol1 : potomkovia) {
  71. // odporPotomkov += uzol1.getOdpor();
  72. // }
  73. // if (odporPotomkov < odpor) {
  74. // odpor = odporPotomkov;
  75. // }
  76. //
  77. // }
  78. //
  79. // vymazPotomkov();
  80. // }
  81. //}
  82. int prejdiPotomkov() {
  83. if (potomkovia.isEmpty()) {
  84. return odpor;
  85. } else {
  86. int pomOdpory=0;
  87. for (Uzol uzol : potomkovia) {
  88. pomOdpory += uzol.prejdiPotomkov();
  89. }
  90. vymazPotomkov();
  91. return (odpor<pomOdpory?odpor:pomOdpory);
  92. }
  93. }
  94. }
  95.