namespace ConsoleApp4 { internal class Program { static void DijkstrasAlgorithm(int[,] massiv, int[] massivOfPoints) { Console.WriteLine("Введите начальный пункт: "); int pointFirst = Convert.ToInt32(Console.ReadLine())-1; int[] minimums = new int[massiv.GetLength(0)]; int min = int.MaxValue; for (int i = 0; i < massiv.GetLength(0); i++) { for (int j = 0; j < massiv.GetLength(1); j++) { if (j==pointFirst ) { continue; } else if (i == pointFirst && massivOfPoints[i] > massiv[i, j]) { massivOfPoints[j] = massiv[i, j]; //&& i != pointFirst && j != pointFirst } else if (massivOfPoints[j] < int.MaxValue && massiv[i, j] < int.MaxValue) { if (massivOfPoints[j] + massiv[i, j] < massivOfPoints[j]) { massivOfPoints[j] = massivOfPoints[j] + massiv[i, j]; } } } } for (int i = 0; i < massivOfPoints.GetLength(0); i++) { Console.WriteLine("Оценка пункта "+(i+1)+" "+massivOfPoints[i]); } } static void Main(string[] args) { Console.WriteLine("Введите количество пунктов: "); int a = Convert.ToInt32(Console.ReadLine()); int[,] matrix = new int[a, a]; int[] matrixOfPoints = new int[a]; for (int i = 0; i < matrix.GetLength(0); i++) { matrixOfPoints[i] = int.MaxValue; } for (int i = 0; i < matrix.GetLength(0); i++) { for (int j = 0; j < matrix.GetLength(1); j++) { if (i == j) { matrix[i, j] = int.MaxValue; } else { //Console.WriteLine("Введите расстояние между " + (i + 1) + " и " + (j + 1) + " пунктами (если пункты не связаны - введите 0)): "); matrix[i, j] = Convert.ToInt32(Console.ReadLine()); if (matrix[i, j] == 0) { matrix[i, j] = int.MaxValue; } } } } DijkstrasAlgorithm(matrix, matrixOfPoints); } } }