Advertisement
Guest User

Untitled

a guest
Oct 27th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.24 KB | None | 0 0
  1. namespace Kruskal
  2. {
  3.     using System.Collections.Generic;
  4.  
  5.     public class KruskalAlgorithm
  6.     {
  7.         public static List<Edge> Kruskal(int numberOfVertices, List<Edge> edges)
  8.         {
  9.             // Initialize parents
  10.             var parent = new int[numberOfVertices];
  11.             for (int i = 0; i < numberOfVertices; i++)
  12.             {
  13.                 parent[i] = i;
  14.             }
  15.  
  16.             // Kruskal
  17.             var spanningTree = new List<Edge>();
  18.             edges.Sort();
  19.             foreach (Edge edge in edges)
  20.             {
  21.                 int rootStartNode = FindRoot(edge.StartNode, parent);
  22.                 int rootEndNode = FindRoot(edge.EndNode, parent);
  23.                 if (rootStartNode != rootEndNode)
  24.                 {
  25.                     spanningTree.Add(edge);
  26.                     parent[edge.EndNode] = edge.StartNode;
  27.                 }
  28.             }
  29.  
  30.             return spanningTree;
  31.         }
  32.  
  33.         public static int FindRoot(int node, int[] parent)
  34.         {
  35.             // Find the root parent for the node
  36.             int root = node;
  37.             while (parent[root] != root)
  38.             {
  39.                 root = parent[root];
  40.             }
  41.  
  42.             return root;
  43.         }
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement