Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. public class Kruskal_1 {
  5. public static class Edge implements Comparable<Edge>{
  6. //Data member
  7. int bv;
  8. int ev;
  9. int cost;
  10. //Constructor
  11. public Edge(int bv, int ev, int cost) {
  12. this.bv = bv;
  13. this.ev = ev;
  14. this.cost = cost;
  15. }
  16. @Override
  17. public int compareTo(Edge o) {
  18. if (this.cost>o.cost) {
  19. return 1;
  20. } else if (this.cost<o.cost) {
  21. return -1;
  22. } else {
  23. return 0;
  24. }
  25. }
  26.  
  27. }
  28. public static void main(String[] args) {
  29. // TODO Auto-generated method stub
  30. Scanner sc= new Scanner(System.in);
  31. int V = 4;
  32. int E = 5;
  33. Edge[] edges = new Edge[E];
  34. for (int i=0; i<E; i++) {
  35. //input edge
  36. int bv = sc.nextInt();
  37. int ev = sc.nextInt();
  38. int cost = sc.nextInt();
  39. //create Edge object and store into oneD array
  40. edges[i] = new Edge(bv, ev, cost);
  41. }
  42.  
  43. Arrays.sort(edges);
  44.  
  45. //read edge one by one from edges array
  46. //the edge will retrieve from least cost to greatest cost
  47. Edge[] MST = new Edge[V-1];
  48. parent = new int[V];
  49. Arrays.fill(parent, -1);
  50. int index = 0; //how many edge add into tree already
  51. for (Edge e:edges) {
  52. int pb = find(e.bv); //parent of beginning vertex
  53. int pe = find(e.ev); //parent of ending vertex
  54. if (pb!=pe) {
  55. MST[index] = e;
  56. union(pb,pe);
  57. index++;
  58. if (index==V-1) {
  59. break;
  60. }
  61. }
  62. }
  63. for (Edge e:MST) {
  64. System.out.println(e.bv+" "+e.ev+" "+e.cost);
  65. }
  66. }
  67.  
  68. public static int parent[];
  69. public static int find(int v) {
  70. if (parent[v]==-1) {
  71. return v; //himself is root
  72. } else {
  73. parent[v] = find(parent[v]);
  74. return parent[v];
  75. }
  76. }
  77.  
  78. public static void union(int pb, int pe) {
  79. parent[pb] = pe;
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement