Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.97 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6.  
  7. namespace lab6
  8. {
  9.     class FloydWarshallAlgo
  10.     {
  11.  
  12.         public const int cst = 9999;
  13.  
  14.         private static void Print(int[,] distance, int verticesCount)
  15.         {
  16.             Console.WriteLine("Shortest distances between every pair of vertices:");
  17.  
  18.             for (int i = 0; i < verticesCount; ++i)
  19.             {
  20.                 for (int j = 0; j < verticesCount; ++j)
  21.                 {
  22.                     if (distance[i, j] == cst)
  23.                         Console.Write("cst".PadLeft(7));
  24.                     else
  25.                         Console.Write(distance[i, j].ToString().PadLeft(7));
  26.                 }
  27.  
  28.                 Console.WriteLine();
  29.             }
  30.         }
  31.  
  32.         public static void FloydWarshall(int[,] graph, int verticesCount)
  33.         {
  34.             int[,] distance = new int[verticesCount, verticesCount];
  35.  
  36.             for (int i = 0; i < verticesCount; ++i)
  37.                 for (int j = 0; j < verticesCount; ++j)
  38.                     distance[i, j] = graph[i, j];
  39.  
  40.             for (int k = 0; k < verticesCount; ++k)
  41.             {
  42.                 for (int i = 0; i < verticesCount; ++i)
  43.                 {
  44.                     for (int j = 0; j < verticesCount; ++j)
  45.                     {
  46.                         if (distance[i, k] + distance[k, j] < distance[i, j])
  47.                             distance[i, j] = distance[i, k] + distance[k, j];
  48.                     }
  49.                 }
  50.             }
  51.  
  52.             Print(distance, verticesCount);
  53.         }
  54.         static void Main(string[] args)
  55.         {
  56.             int[,] graph = {
  57.                          { cst,   2,   3,   6 },
  58.                          {   5, cst, cst,   2 },
  59.                          {   4, cst, cst,   4 },
  60.                          { cst,   5,   4, cst }
  61.                            };
  62.  
  63.             FloydWarshall(graph, 4);
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement