Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mst.kruskal;
- import java.util.*;
- public class Kruskal {
- /**
- * Minimum spanning tree - Krukal's Algorithm
- * @author Kaidul
- * @category Graph
- */
- static final int MAX = 100;
- int u, v, cost;
- static Kruskal[] k = new Kruskal[MAX];
- // Vector <Integer> parentSet = new Vector <Integer> ();
- static int[] parentSet = new int[100];
- void initSet(int _size){
- // parentSet.setSize(_size);
- for (int i = 0; i <= _size; i++) {
- parentSet[i] = i;
- }
- }
- static int findSet(int var){
- if (parentSet[var] == var) {
- return var;
- }
- else return parentSet[var] = findSet(parentSet[var]);
- }
- static void unionSet(int a, int b){
- if (parentSet[a] == a) {
- parentSet[a] = findSet(b);
- return;
- } else if (parentSet[b] == b) {
- parentSet[b] = findSet(a);
- } else{
- int m = findSet(a);
- int n = findSet(b);
- parentSet[m] = n;
- }
- }
- static Vector <Integer> vec = new Vector <Integer> ();
- static void mst(int edge, int vertex){
- int sum = 0;
- for (int i = 0; i < edge; i++) {
- if (findSet(k[i].u) != findSet(k[i].v)) {
- vec.add(k[i].cost);
- sum += k[i].cost;
- unionSet(k[i].u, k[i].v);
- }
- }
- System.out.println("The minimum spanning tree" + sum);
- }
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- int vertex_no = input.nextInt();
- int edge_no = input.nextInt();
- for (int i = 0; i < edge_no; i++) {
- k[i].u = input.nextInt();
- k[i].v = input.nextInt();
- k[i].cost = input.nextInt();
- }
- mst(edge_no, vertex_no);
- // Scanner input = new Scanner(System.in);
- // while(input.hasNext())
- // System.out.println(input.nextBigInteger()
- // .subtract(input.nextBigInteger()).abs());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement