public Graf MinDrzewoRozp_Kruskal() { Graf mst = new Graf(iloscWierzcholkow); // Sortowanie krawedzi List <Pair <int, int[]> > listaKrawedzi = new List <Pair <int, int[]> >(); for (int i = 0; i < iloscWierzcholkow; i++) { for (int j = i + 1; j < iloscWierzcholkow; j++) { if (macierzWag[i, j] != int.MaxValue) { listaKrawedzi.Add(new Pair <int, int[]>(macierzWag[i, j], new int[] { i, j })); } } } listaKrawedzi.Sort(); // Iterowanie po krawedziach foreach (var p in listaKrawedzi) { var k = p.Value; if (mst.CzyIstniejeSciezka(k[0], k[1])) { continue; } else { mst.DodajKrawedzNieskierowana(k[0], k[1], macierzWag[k[0], k[1]]); mst.Polacz(k[0], k[1]); } } return(mst); }
static void Main(string[] args) { Graf g = new Graf(n); Random r = new Random(); for (int i = 0; i < n; i++) // dodanie krawedzi { for (int j = i; j < n; j++) { g.DodajKrawedzNieskierowana(i, j, r.Next(1, 100)); } } Console.WriteLine("Macierz wag grafu g: "); WypiszMacierzWag(g.MacierzWag, n); Graf mst = g.MinDrzewoRozp_Kruskal(); Console.WriteLine("Macierz wag drzewa mst stworzonego na podstawie grafu g: "); WypiszMacierzWag(mst.MacierzWag, n); Console.ReadLine(); }