Advertisement
WadeRollins2710

Find Shortest Path Algorithm

Oct 5th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Map
  4. {
  5.     class Program
  6.     {
  7.         static public class main
  8.         {
  9.             public static int[,] A = new int[10000,10000];
  10.             public static int[,] Trace = new int[10000, 10000];
  11.             public static int n, m, Begin, End;
  12.         }
  13.         public static void Input()
  14.         {
  15.             int Start, Finish, Length;
  16.             Console.Clear();
  17.             Console.Write("Input number of location: ");
  18.             main.n = int.Parse(Console.ReadLine());
  19.             Console.Write("Input number of path: ");
  20.             main.m = int.Parse(Console.ReadLine());
  21.             for (int i = 1; i <= main.n; i++)
  22.                 for (int j = 1; j <= main.n; j++)
  23.                     if (i == j) main.A[i, j] = 0;
  24.                     else main.A[i, j] = 32000;
  25.             for (int i=1;i<=main.m;i++)
  26.             {
  27.                 Console.Write("Input Start-End-Length of Path: ");
  28.                 string S = Console.ReadLine();
  29.                 string[] Inp = S.Split(' ');
  30.                 Start = int.Parse(Inp[0]);
  31.                 Finish = int.Parse(Inp[1]);
  32.                 Length = int.Parse(Inp[2]);
  33.                 main.A[Start, Finish] = Length;
  34.                 main.A[Finish, Start] = Length;
  35.             }
  36.             Console.Write("Input Start Location: ");
  37.             main.Begin = int.Parse(Console.ReadLine());
  38.             Console.Write("Input Finish Location: ");
  39.             main.End = int.Parse(Console.ReadLine());
  40.         }
  41.         public static void Process()
  42.         {
  43.             int i, j, k;
  44.             for (i = 1; i <= main.n; i++)
  45.                 for (j = 1; j <= main.n; j++)
  46.                     main.Trace[i, j] = j;
  47.             for (k = 1; k <= main.n; k++)
  48.                 for (i = 1; i <= main.n; i++)
  49.                     for (j = 1; j <= main.n; j++)
  50.                         if (main.A[i, j] > main.A[i, k] + main.A[k, j])
  51.                         {
  52.                             main.A[i, j] = main.A[i, k] + main.A[k, j];
  53.                             main.Trace[i, j] = k;
  54.                         }
  55.  
  56.         }
  57.         public static void Output()
  58.         {
  59.             if (main.A[main.Begin, main.End] == 32000) Console.WriteLine("Path Not Found!");
  60.             else
  61.             {
  62.                 Console.WriteLine("Length: {0}", main.A[main.Begin, main.End]);
  63.                 Console.Write("Path: {0}-", main.Begin);
  64.                 while (main.Begin!=main.End)
  65.                 {
  66.                     Console.Write("{0}-",main.Trace[main.Begin,main.End]);
  67.                     main.Begin = main.Trace[main.Begin, main.End];
  68.                 }
  69.             }
  70.         }
  71.         static void Main(string[] args)
  72.         {
  73.             Input();
  74.             Process();
  75.             Output();
  76.             Console.ReadLine();
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement