Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace PI1
  8. {
  9. class Program
  10. {
  11.  
  12.  
  13. static void Main(string[] args)
  14. {
  15.  
  16. Random rand = new Random();
  17.  
  18. bool[] arr1 = new bool[100]; //массив посещения вершин
  19. int[] arr2 = new int[100]; //массив минимального расстояния от начала до данной вершины
  20.  
  21. int n = 1;
  22. int[,] a;
  23. n = Convert.ToInt32(Console.ReadLine());
  24. a = new int[n, n];
  25.  
  26.  
  27. for (short i = 0; i < n; i++)
  28. for (short j = 0; j < n; j++)
  29. try
  30. {
  31. a[i, j] = rand.Next(0, 20);
  32. Console.WriteLine("Добавлено ребро: (" + i.ToString() + "; " + j.ToString() + ") весом " + a[i, j] + "\r\n");
  33. }
  34. catch
  35. {
  36. a[i, j] = 0;
  37.  
  38. }
  39.  
  40. for (int i = 0; i < n; i++) //матрица смежности
  41. {
  42. for (int j = 0; j < n; j++)
  43. Console.Write("{0,-10} ", a[i, j]);
  44. Console.WriteLine();
  45. }
  46.  
  47.  
  48.  
  49. for (int beg = 0; beg < n; beg++)
  50. {
  51. for (int i = 0; i < n; i++)
  52. {
  53. arr1[i] = true;
  54. arr2[i] = 999999999;
  55. }
  56. arr2[beg] = 0;
  57. bool gr = true;
  58. int tekgr = beg; // граф
  59. while (gr == true)
  60. {
  61. int min = 999999999, ming = 0;
  62. for (int i = 0; i < n; i++)
  63. if ((arr1[i] == true) && (a[tekgr, i] != 0) && (a[tekgr, i] + arr2[tekgr] < arr2[i]))
  64. arr2[i] = arr2[tekgr] + a[tekgr, i];
  65. arr1[tekgr] = false;
  66. for (int i = 0; i < n; i++) // поиск "ближайшего" к началу графа
  67. if ((arr2[i] < min) && (arr1[i] == true))
  68. {
  69. min = arr2[i];
  70. ming = i;
  71. }
  72. tekgr = ming;
  73. gr = false;
  74. for (int i = 0; i < n; i++) //проверка, остались ли непосещенные графы
  75. if (arr1[i] == true)
  76. gr = true;
  77. }
  78. for (int i = 0; i < n; i++)
  79. {
  80. Console.WriteLine("Минимальное расстояние от {0} поселения до {1} поселения = " + arr2[i], beg + 1, i + 1);
  81. //Console.WriteLine(arr2[i]);
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement