Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. import java.util.Stack;
  5. import java.util.Vector;
  6.  
  7. import ee.ut.kiho.aa.graaf.Graaf;
  8. import ee.ut.kiho.aa.graaf.GraafiJoonistaja;
  9. import ee.ut.kiho.aa.graaf.Kaar;
  10. import ee.ut.kiho.aa.graaf.Tipp;
  11.  
  12. /**
  13. * Algoritmid ja andmestruktuurid
  14. * 2016/2017 õppeaasta sügissemester
  15. * Arvutipraktikum
  16. * rühm: inf1
  17. *
  18. * 12. praktikumi ülesanne: GTE_2-1 Eellaste seadmine
  19. *
  20. * @Author Reemet Ammer
  21. */
  22.  
  23. public class GTE2_4 {
  24.  
  25. static void teePikkus(Graaf g, List<Integer> tee){
  26. //System.out.println(tee.size());
  27. int pikkus = 0;
  28. for (int i = 0; i < tee.size()-1; i++){
  29. Tipp t1 = g.tipp(tee.get(i)-1);
  30. Tipp t2 = g.tipp(tee.get(i+1)-1);
  31. Kaar k = g.kaar(t1, t2);
  32. pikkus += Integer.parseInt(k.nimi());
  33. }
  34. System.out.println("Pikkus on " + pikkus);
  35. }
  36.  
  37. static void tee(Graaf g, int b){
  38. List<Integer> tee = new ArrayList<Integer>();
  39.  
  40. //Alustatakse lõpptipust ja käiakse järjest läbi eellased kuni algustipuni, iga tipp salvestatakse listi
  41. Tipp tipp = g.tipp(b);
  42. tee.add(g.indeks(tipp)+1);
  43. while (tipp.väli("eellane") != null){
  44. tipp = g.tipp(Integer.parseInt(tipp.väli("eellane"))-1);
  45. tee.add(g.indeks(tipp)+1);
  46. }
  47.  
  48. Collections.reverse(tee);
  49. System.out.println(tee);
  50. teePikkus(g,tee);
  51. }
  52.  
  53. //Antud: graaf g ja tema kaks tippu t ja b
  54. //Tulemus: g tippudele lisatakse välju "eellane" ja "vaadeldud"
  55. //kui leidub tee tipust t tippu b, siis on see tee määratud tipuväljadega "eellane"
  56. //x.väli("eellane") on selle tipu number, kust tuleb tee tippu x
  57. static void eellased_teel(Graaf g, Tipp t, Tipp b){
  58.  
  59. if (t == b){
  60. tee(g, g.indeks(b));
  61. return;
  62. }
  63. else t.seadaVäli("vaadeldud", "x");
  64.  
  65. for (Tipp v : g.naabrid(t)){
  66. if (v.väli("vaadeldud") == null){
  67. v.seadaVäli("eellane", "" + (g.indeks(t)+1));
  68. eellased_teel(g,v,b);
  69. }
  70. }
  71. t.eemaldadaVäli("vaadeldud");
  72. }
  73.  
  74. public static void main(String[] args) {
  75.  
  76. Graaf g = new Graaf();
  77. String fNimi = "graafTeed.txt";
  78. g = Graaf.sisestadaTabelist(fNimi);
  79.  
  80. //Algustipp ja lõpptipp on tähistatud alljärgnevate numbritega, kuid nende tegelikud indeksid on t-1 ja b-1
  81. int t = 1;
  82. int b = 12;
  83.  
  84. //Leitakse tee tipust tähistusega t tippu tähistusega b
  85. eellased_teel(g, g.tipp(t-1), g.tipp(b-1));
  86. //tee(g, g.indeks(g.tipp(11)));
  87.  
  88.  
  89. new GraafiJoonistaja(fNimi);
  90.  
  91. }
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement