12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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);
- }
- }
- }
|