Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Kunnostus {
  4. int n;
  5. int[] vanhempi;
  6. int[] koko;
  7. PriorityQueue<Kaari> kaaret;
  8. ArrayList<Kaari> lyhin;
  9.  
  10. public Kunnostus(int n) {
  11. this.n = n;
  12. this.vanhempi = new int[n + 1];
  13. this.koko = new int[n + 1];
  14. this.kaaret = new PriorityQueue();
  15. this.lyhin = new ArrayList();
  16. for (int i = 1; i <= n; i++) {
  17. vanhempi[i] = i;
  18. koko[i] = 1;
  19. }
  20. }
  21.  
  22. public void lisaaTie(int a, int b, int x) {
  23. kaaret.add(new Kaari(a, b, x));
  24. }
  25. public void yhdista(int a, int b) {
  26. a = etsiHuippu(a);
  27. b = etsiHuippu(b);
  28. if (a == b) {
  29. return;
  30. }
  31. if (koko[a] > koko[b]) {
  32. vanhempi[b] = a;
  33. koko[a] += koko[b];
  34.  
  35. } else {
  36. vanhempi[a] = b;
  37. koko[b] += koko[a];
  38.  
  39. }
  40. }
  41.  
  42. public int laske() {
  43.  
  44.  
  45. for(Kaari x : kaaret) {
  46. if(etsiHuippu(x.alku) != etsiHuippu(x.loppu)) {
  47. yhdista(x.alku, x.loppu);
  48. lyhin.add(x);
  49.  
  50. }
  51. }
  52. int ulos = 0;
  53. for(Kaari y : lyhin) {
  54. ulos += y.paino;
  55. }
  56. return ulos;
  57. }
  58.  
  59. public int etsiHuippu(int x) {
  60. while (vanhempi[x] != x) {
  61. x = vanhempi[x];
  62. }
  63. return x;
  64. }
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. class Kaari implements Comparable<Kaari> {
  75. int alku;
  76. int loppu;
  77. int paino;
  78. public Kaari(int a, int l, int p) {
  79. this.alku = a;
  80. this.loppu = l;
  81. this.paino = p;
  82. }
  83. public int compareTo(Kaari k) {
  84. return this.paino - k.paino;
  85. }
  86. }
  87.  
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement