Guest User

Untitled

a guest
Jan 23rd, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 24.51 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace lab_siaod_8_9
  7. {
  8.     class Program
  9.     {
  10.         static int[] cog = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  11.         static int[] dog = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  12.         static int[] fog = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  13.         static int time = 0;
  14.  
  15.         static int[] d = new int[] { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 };
  16.         static int[] d1 = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  17.         static int[] d2 = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  18.         static int[,] dec = new int[20, 20];
  19.  
  20.         static int[][,] og = new int[20][,];
  21.         static int[,] ng = new int[20, 20];
  22.  
  23.         static int[,] ngo = new int[20, 20];
  24.         static int[] u = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  25.  
  26.         static int[,] W = new int[20, 20];
  27.  
  28.         static int[,] f = new int[20, 20];
  29.  
  30.         static void bf(int s)
  31.         {
  32.             d[s] = 0;
  33.             for (int g = 0; g < 20; g++)
  34.             {
  35.                 for (int i = 0; i < 20; i++)
  36.                 {
  37.                     for (int j = 0; j < og[i].Length / 2; j++)
  38.                     {
  39.                         if (d[og[i][j, 0]] > (d[i] + og[i][j, 1])) d[og[i][j, 0]] = (d[i] + og[i][j, 1]);
  40.                     }
  41.                 }
  42.             }
  43.  
  44.         }
  45.         static void adec(int s)
  46.         {
  47.             d2[s] = 1;
  48.             d1[s] = 0;
  49.             int min = 50,x=0,y=0;
  50.             for (int g = 0; g < 19; g++)
  51.             {
  52.                 for (int i = 0; i < 20; i++)
  53.                 {
  54.                     if (d2[i] == 0) continue;
  55.                     for (int j = 0; j < 20; j++)
  56.                     {
  57.                         if (d2[j] == 1) continue;
  58.                         if (dec[i, j] <= min)
  59.                         {
  60.                             min = dec[i, j];
  61.                             x = i;
  62.                             y = j;
  63.                         }
  64.                     }
  65.                 }
  66.                 d1[y] = d1[x] + min;
  67.                 d2[y] = 1;
  68.                 dec[x, y] = 99;
  69.                 min = 50;
  70.             }
  71.         }
  72.  
  73.         static void dfs(int i)
  74.         {
  75.             //Console.Write("\nНахождение в вершине:"+i+";");
  76.             cog[i] = 1;
  77.             time++;
  78.             dog[i] = time;
  79.             for (int j = 0; j < og[i].Length / 2; j++)
  80.             {
  81.                 if (cog[og[i][j, 0]] == 0)
  82.                 {
  83.                     Console.Write("\nРебро ("+i+","+og[i][j,0]+") - ребро дерева\n");
  84.                     dfs(og[i][j, 0]);
  85.                 }
  86.                 if (cog[og[i][j, 0]] == 1)
  87.                 {
  88.                     Console.Write("\nРебро (" + i + "," + og[i][j, 0] + ") - обратное ребро\n");
  89.                 }
  90.                 if (cog[og[i][j, 0]] == 2)
  91.                 {
  92.                     Console.Write("\nРебро (" + i + "," + og[i][j, 0] + ") - прямое или перекрестное ребро\n");
  93.                 }
  94.                 cog[og[i][j, 0]] = 2;
  95.                 fog[og[i][j, 0]] = time = time + 1;
  96.                 //Console.Write("\nНе найдены белые вершины/Возврат в вершину:" + i + ";");
  97.             }
  98.         }
  99.  
  100.         static int min(int a, int b)
  101.         {
  102.             if (a > b) return b;
  103.             else return a;
  104.         }
  105.  
  106.         static void fw()
  107.         {
  108.             for (int k = 0; k < 20; k++)
  109.                 for (int i = 0; i < 20; i++)
  110.                     for (int j = 0; j < 20; j++)
  111.                     {
  112.                         W[i, j] = min(W[i, j], W[i, k] + W[k, j]);
  113.                     }
  114.         }
  115.  
  116.         static void prim(int w)
  117.         {
  118.             int x=0, y=0;
  119.             int min = 50;
  120.             for (int i = 0; i < 20; i++)
  121.             {
  122.                 u[w] = 1;
  123.                 x = w;
  124.                 for(int g=0;g<20;g++)
  125.                 {
  126.                     if(u[g]==0)continue;
  127.                     for (int j = 0; j < 20; j++)
  128.                     {
  129.                         if (u[j] == 1) continue;
  130.                         if (min > ng[g, j])
  131.                         {
  132.                             min = ng[g, j];
  133.                             x= g;
  134.                             y = j;
  135.                         }
  136.                     }
  137.                 }
  138.                 if (min == 50) continue;
  139.                 ngo[x, y] = ngo[y, x] = min;
  140.                 min = 50;
  141.                 w = y;
  142.                 //Console.Write("\n");
  143.                 //Console.Write("добавится"+ w+"\n");
  144.                 //for (int g = 0; g < 20; g++) Console.Write(u[g]);
  145.                 //Console.Write("\n");
  146.             }
  147.         }
  148.  
  149.         static bool[] mp = new bool[20];
  150.  
  151.         static int ff1(int s, int t, int inf)
  152.         {
  153.             if(s==t)return inf;
  154.             mp[s] = true;
  155.             for (int v = 0; v < 20; v++)
  156.             {
  157.                 if (!mp[v] && (f[s, v] > 0))
  158.                 {
  159.                     int df = ff1(v,t,min(inf,f[s,v]));
  160.                     if (df > 0)
  161.                     {
  162.                         f[s, v] -= df;
  163.                         f[v, s] += df;
  164.                         return df;
  165.                     }
  166.                 }
  167.             }
  168.             return 0;
  169.         }
  170.  
  171.         static int ff(int s, int t)
  172.         {
  173.             for (int p = 0; ; )
  174.             {
  175.                 for (int i = 0; i < 20; i++) mp[i] = false;
  176.                 int df = ff1(s, t, 9999999);
  177.                 if (df == 0) return p;
  178.                 p += df;
  179.             }
  180.         }
  181.  
  182.         static void Main(string[] args)
  183.         {
  184.             Random ran = new Random();
  185.             //ориентированный
  186.             og[0] = new int[1, 2];
  187.             og[1] = new int[1, 2];
  188.             og[2] = new int[2, 2];
  189.             og[3] = new int[3, 2];
  190.             og[4] = new int[1, 2];
  191.             og[5] = new int[2, 2];
  192.             og[6] = new int[2, 2];
  193.             og[7] = new int[1, 2];
  194.             og[8] = new int[2, 2];
  195.             og[9] = new int[1, 2];
  196.             og[10] = new int[2, 2];
  197.             og[11] = new int[2, 2];
  198.             og[12] = new int[1, 2];
  199.             og[13] = new int[1, 2];
  200.             og[14] = new int[1, 2];
  201.             og[15] = new int[1, 2];
  202.             og[16] = new int[1, 2];
  203.             og[17] = new int[1, 2];
  204.             og[18] = new int[1, 2];
  205.             og[19] = new int[2, 2];
  206.             og[0][0, 0] = 5;
  207.             og[1][0, 0] = 6;
  208.             og[2][0, 0] = 8;
  209.             og[2][1, 0] = 18;
  210.             og[3][0, 0] = 2;
  211.             og[3][1, 0] = 4;
  212.             og[3][2, 0] = 9;
  213.             og[4][0, 0] = 14;
  214.             og[5][0, 0] = 1;
  215.             og[5][1, 0] = 10;
  216.             og[6][0, 0] = 0;
  217.             og[6][1, 0] = 12;
  218.             og[7][0, 0] = 12;
  219.             og[8][0, 0] = 3;
  220.             og[8][1, 0] = 13;
  221.             og[9][0, 0] = 13;
  222.             og[10][1, 0] = 16;
  223.             og[10][0, 0] = 19;
  224.             og[11][1, 0] = 5;
  225.             og[11][0, 0] = 15;
  226.             og[12][0, 0] = 16;
  227.             og[13][0, 0] = 17;
  228.             og[14][0, 0] = 9;
  229.             og[15][0, 0] = 17;
  230.             og[16][0, 0] = 11;
  231.             og[17][0, 0] = 7;
  232.             og[18][0, 0] = 14;
  233.             og[19][0, 0] = 17;
  234.             og[19][1, 0] = 8;
  235.             for (int i = 0; i < 20; i++) for (int j = 0; j < og[i].Length / 2; j++) og[i][j, 1] = ran.Next(1, 10);
  236.             while (true)
  237.             {
  238.                 //конец ориентированный
  239.                 Console.WriteLine("\nДействия:\n1)Вывести список смежности\n2)Поиск в глубину\n3)Поиск путей из выбранной вершины(Беллмана-Форда)\n4)Матрица смежности неотриентированного графа\n5)Матрица смежности оставного дерева с псевдографикой\n6)Матрица кратчайших путей\n7)Максимальный поток\n8)Выход\n9)Поиск путей из выбранной вершины(Дейкстры)\n");
  240.                 int change,n;
  241.                 string str;
  242.                 str=Console.ReadLine();
  243.                 change = int.Parse(str);
  244.                 if (change == 8) return;
  245.                 if (change == 1)
  246.                 {
  247.                     Console.Write("Список смежности ориентированного графа:\n");
  248.                     for (int i = 0; i < 20; i++)
  249.                     {
  250.                         Console.Write("вершина " + i + "->");
  251.                         for (int j = 0; j < og[i].Length / 2; j++) Console.Write(og[i][j, 0] + "," + og[i][j, 1] + "  ");
  252.                         Console.Write("\n");
  253.                     };
  254.                     continue;
  255.                 }
  256.                 //bf
  257.                 if (change == 3)
  258.                 {
  259.                     Console.Write("\nНомер вершины(1-20):\n");
  260.                     str = Console.ReadLine();
  261.                     n = int.Parse(str);
  262.                     bf(n);
  263.  
  264.                     Console.Write("\nВершина:\n");
  265.                     for (int i = 0; i < 20; i++)
  266.                     {
  267.                         if (i < 10) Console.Write(" ");
  268.                         Console.Write(i + " ");
  269.                     }
  270.                     Console.Write("\n");
  271.                     for (int i = 0; i < 20; i++)
  272.                     {
  273.                         if (d[i] < 10) Console.Write(" ");
  274.                         Console.Write(d[i] + " ");
  275.                     }
  276.                     Console.Write("\n-Путь из вершины\n");
  277.                     continue;
  278.                 }
  279.                 //bf
  280.                 //начало DFS
  281.                 Console.Write("\nПоиск в глубину:\n");
  282.                 if (change == 2)
  283.                 {
  284.                     time = 0;
  285.                     for (int i = 0; i < 20; i++)
  286.                     {
  287.                         if (cog[i] == 0) dfs(i);
  288.                         else continue;
  289.                         cog[i] = 2;
  290.                         fog[i] = time = time + 1;
  291.                     }
  292.                     Console.Write("\nПоиск в глубину:\n");
  293.                     Console.Write("Вершина" + "->" + "Время обращения" + "_" + "Время завершения работы" + "\n");
  294.                     for (int i = 0; i < 20; i++)
  295.                     {
  296.                         Console.Write(i + "->" + dog[i] + "_" + fog[i] + "\n");
  297.                     }
  298.                     continue;
  299.                 }
  300.                 //конец DFS
  301.                 //начало неориентированный
  302.                 for (int i = 0; i < 20; i++)
  303.                     for (int j = 0; j < 20; j++) ng[i, j] = 99;
  304.                 for (int i = 0; i < 20; i++)
  305.                 {
  306.                     for (int j = 0; j < og[i].Length / 2; j++)
  307.                     {
  308.                         { ng[i, og[i][j, 0]] = ng[og[i][j, 0], i] = ran.Next(1, 10); }
  309.                     }
  310.                 }
  311.                 if (change == 4)
  312.                 {
  313.                     Console.Write("Неориентированный граф:\n");
  314.                     for (int i = 0; i < 20; i++)
  315.                     {
  316.                         for (int j = 0; j < 20; j++)
  317.                         {
  318.                             if (ng[i, j] < 10) Console.Write(" ");
  319.                             Console.Write(ng[i, j] + " ");
  320.                         }
  321.                         Console.Write("\n");
  322.                     }
  323.                     continue;
  324.                 }
  325.  
  326.                 //конец неориентированный
  327.                 //начало Прима
  328.                 for (int i = 0; i < 20; i++)
  329.                     for (int j = 0; j < 20; j++) ngo[i, j] = 0;
  330.                 if (change == 5)
  331.                 {
  332.                     Console.Write("\nНомер вершины(0-19):\n");
  333.                     str = Console.ReadLine();
  334.                     n = int.Parse(str);
  335.                     prim(n);
  336.                     Console.Write("\n");
  337.                     Console.Write("Матрица смежности остовного дерева:\n");
  338.                     for (int i = 0; i < 20; i++)
  339.                     {
  340.                         for (int j = 0; j < 20; j++) Console.Write(ngo[i, j] + " ");
  341.                         Console.Write("\n");
  342.                     }
  343.                     Console.Write("Остовное дерево:\n");
  344.                     //псевдографика для прима
  345.                     //первый ряд
  346.                     Console.Write("   ");
  347.                     Console.Write("( 0)");
  348.                     if (ngo[0, 6] == 0) Console.Write(" "); else Console.Write("\\");
  349.                     Console.Write(" ");
  350.                     if (ngo[1, 5] == 0) Console.Write(" "); else Console.Write("/");
  351.                     Console.Write("( 1)");
  352.                     Console.Write("   ");
  353.                     Console.Write("( 2)");
  354.                     if (ngo[2, 3] == 0) Console.Write("   "); else Console.Write("---");
  355.                     Console.Write("( 3)");
  356.                     if (ngo[3, 4] == 0) Console.Write("   "); else Console.Write("---");
  357.                     Console.Write("( 4)");
  358.                     Console.Write("\n");
  359.                     //второй ряд
  360.                     Console.Write("   ");
  361.                     if (ngo[0, 5] == 0) Console.Write("    "); else Console.Write(" |  ");
  362.                     if ((ngo[0, 6] == 0) && (ngo[1, 5] == 0)) Console.Write("   ");
  363.                     else if ((ngo[0, 6] == 0) && (ngo[1, 5] != 0)) Console.Write(" / ");
  364.                     else if ((ngo[0, 6] != 0) && (ngo[1, 5] == 0)) Console.Write(" \\ "); else Console.Write(" X ");
  365.                     if (ngo[1, 6] == 0) Console.Write("    "); else Console.Write(" |  ");
  366.                     Console.Write("      ");
  367.                     if (ngo[2, 18] == 0) Console.Write(" "); else Console.Write("\\");
  368.                     if (ngo[2, 8] == 0) Console.Write("   "); else Console.Write("\\  ");
  369.                     if (ngo[3, 8] == 0) Console.Write("   "); else Console.Write(" |  ");
  370.                     if (ngo[3, 9] == 0) Console.Write("   "); else Console.Write("\\  ");
  371.                     Console.Write("    ");
  372.                     if (ngo[4, 14] == 0) Console.Write("   "); else Console.Write("\\");
  373.                     Console.Write("\n");
  374.                     //третий ряд
  375.                     Console.Write("   ");
  376.                     Console.Write("( 5)");
  377.                     if (ngo[1, 5] == 0) Console.Write(" "); else Console.Write("-");
  378.                     Console.Write(" ");
  379.                     if (ngo[0, 6] == 0) Console.Write(" "); else Console.Write("-");
  380.                     Console.Write("( 6)");
  381.                     if (ngo[6, 12] == 0) Console.Write("   "); else Console.Write("\\  ");
  382.                     Console.Write("( 7)");
  383.                     if (ngo[2, 18] == 0) Console.Write(" "); else Console.Write("\\");
  384.                     if (ngo[2, 8] == 0) Console.Write("  "); else Console.Write("--");
  385.                     Console.Write("( 8)");
  386.                     if (ngo[8, 19] == 0) Console.Write(" "); else Console.Write("\\");
  387.                     if (ngo[3, 9] == 0) Console.Write("  "); else Console.Write("--");
  388.                     Console.Write("( 9)");
  389.                     if (ngo[4, 14] == 0) Console.Write(" "); else Console.Write("|");
  390.                     Console.Write("\n");
  391.                     //четвертый ряд
  392.                     Console.Write("   ");
  393.                     if (ngo[5, 10] == 0) Console.Write("    "); else Console.Write(" |  ");
  394.                     if (ngo[5, 11] == 0) Console.Write("   "); else Console.Write("\\  ");
  395.                     Console.Write("    ");
  396.                     if (ngo[6, 12] == 0) Console.Write("   "); else Console.Write(" -\\");
  397.                     if (ngo[7, 12] == 0) Console.Write("    "); else Console.Write(" |  ");
  398.                     if (ngo[7, 17] == 0) Console.Write(" "); else Console.Write("\\");
  399.                     if (ngo[2, 18] == 0) Console.Write("  "); else Console.Write("\\ ");
  400.                     if (ngo[8, 13] == 0) Console.Write("    "); else Console.Write(" |  ");
  401.                     if ((ngo[8, 19] == 0) && (ngo[13, 9] == 0)) Console.Write("   ");
  402.                     else if ((ngo[8, 19] == 0) && (ngo[13, 9] != 0)) Console.Write(" -/");
  403.                     else if ((ngo[8, 19] != 0) && (ngo[13, 9] == 0)) Console.Write(" | "); else Console.Write(" + ");
  404.                     if (ngo[9, 14] == 0) Console.Write("    "); else Console.Write(" |  ");
  405.                     if (ngo[4, 14] == 0) Console.Write(" "); else Console.Write("/");
  406.                     Console.Write("\n");
  407.                     //пятый ряд
  408.                     Console.Write("   ");
  409.                     Console.Write("(10)");
  410.                     if (ngo[10, 16] == 0) Console.Write(" "); else Console.Write("\\");
  411.                     if (ngo[5, 11] == 0) Console.Write("  "); else Console.Write("--");
  412.                     Console.Write("(11)");
  413.                     Console.Write("   ");
  414.                     Console.Write("(12)");
  415.                     if (ngo[7, 17] == 0) Console.Write(" "); else Console.Write("|");
  416.                     if (ngo[2, 18] == 0) Console.Write(" "); else Console.Write("|");
  417.                     if (ngo[17, 13] == 0) Console.Write(" "); else Console.Write("-");
  418.                     Console.Write("(13)");
  419.                     if (ngo[13, 9] == 0) Console.Write(" "); else Console.Write("/");
  420.                     if (ngo[8, 19] == 0) Console.Write(" "); else Console.Write("|");
  421.                     if (ngo[18, 14] == 0) Console.Write(" "); else Console.Write("/");
  422.                     Console.Write("(14)");
  423.                     Console.Write("\n");
  424.                     //шестой ряд
  425.                     if (ngo[19, 10] == 0) Console.Write("   "); else Console.Write("  /");
  426.                     Console.Write("    ");
  427.                     if (ngo[10, 16] == 0) Console.Write("  "); else Console.Write(" \\");
  428.                     if (ngo[11, 15] == 0) Console.Write(" "); else Console.Write("/");
  429.                     if (ngo[11, 16] == 0) Console.Write("    "); else Console.Write(" |  ");
  430.                     if (ngo[16, 12] == 0) Console.Write("   "); else Console.Write(" -/");
  431.                     Console.Write("    ");
  432.                     if (ngo[7, 17] == 0) Console.Write(" "); else Console.Write("/");
  433.                     if (ngo[17, 13] == 0) Console.Write(" "); else Console.Write("/");
  434.                     if (ngo[2, 18] == 0) Console.Write(" "); else Console.Write("\\");
  435.                     Console.Write("    ");
  436.                     if ((ngo[18, 14] == 0) && (ngo[8, 19] == 0)) Console.Write("   ");
  437.                     else if ((ngo[18, 14] == 0) && (ngo[8, 19] != 0)) Console.Write(" -\\");
  438.                     else if ((ngo[18, 14] != 0) && (ngo[8, 19] == 0)) Console.Write(" | "); else Console.Write(" +\\");
  439.                     Console.Write("\n");
  440.                     //седьмой ряд
  441.                     if (ngo[10, 19] == 0) Console.Write("   "); else Console.Write("  |");
  442.                     Console.Write("(15)");
  443.                     if (ngo[15, 11] == 0) Console.Write("  "); else Console.Write("--");
  444.                     if (ngo[10, 16] == 0) Console.Write(" "); else Console.Write("\\");
  445.                     Console.Write("(16)");
  446.                     if (ngo[16, 12] == 0) Console.Write("   "); else Console.Write("/  ");
  447.                     Console.Write("(17)");
  448.                     if (ngo[13, 17] == 0) Console.Write("   "); else Console.Write("-  ");
  449.                     Console.Write("(18)");
  450.                     if (ngo[18, 14] == 0) Console.Write("   "); else Console.Write("/  ");
  451.                     Console.Write("(19)");
  452.                     Console.Write("\n");
  453.                     //восьмой ряд
  454.                     if (ngo[10, 19] == 0) Console.Write("   "); else Console.Write("  |");
  455.                     if (ngo[15, 17] == 0) Console.Write("               "); else Console.Write("   \\__________/  ");
  456.                     if (ngo[17, 19] == 0) Console.Write("             "); else Console.Write("\\__________/ ");
  457.                     if (ngo[10, 19] == 0) Console.Write(" "); else Console.Write("/");
  458.                     Console.Write("\n");
  459.                     //девятый ряд
  460.                     if (ngo[10, 19] == 0) Console.Write("                                 "); else Console.Write("   \\____________________________/");
  461.                     Console.Write("\n");
  462.                     continue;
  463.                 }
  464.                 //конец Прима
  465.                 //начало матрица вершин
  466.                 for (int i = 0; i < 20; i++) for (int j = 0; j < 20; j++)
  467.                     {
  468.                         W[i, j] = 99;
  469.                     }
  470.                 for (int i = 0; i < 20; i++) for (int j = 0; j < og[i].Length / 2; j++) W[i, og[i][j, 0]] = og[i][j, 1];
  471.                 if (change == 6)
  472.                 {
  473.                     fw();
  474.                     Console.Write("Кратчайшие пути между всеми вершинами:\n");
  475.                     for (int i = 0; i < 20; i++)
  476.                     {
  477.                         for (int j = 0; j < 20; j++)
  478.                         {
  479.                             if (W[i, j] < 10) Console.Write(" ");
  480.                             Console.Write(W[i, j] + " ");
  481.                         }
  482.                         Console.Write("\n");
  483.                     }
  484.                     continue;
  485.                 }
  486.  
  487.                 //конец матрица вершин
  488.                 //начало Форда-Фалкенсона
  489.  
  490.                 if (change == 7)
  491.                 {
  492.                     Console.Write("\nНомер истока(0-19):\n");
  493.                     str = Console.ReadLine();
  494.                     n = int.Parse(str);
  495.                     int n1;
  496.                     Console.Write("\nНомер стока(0-19):\n");
  497.                     str = Console.ReadLine();
  498.                     n1 = int.Parse(str);
  499.                     for (int i = 0; i < 20; i++)
  500.                     {
  501.                         for (int j = 0; j < og[i].Length / 2; j++)
  502.                         {
  503.                             { f[i, og[i][j, 0]] = og[i][j, 1]; }
  504.                         }
  505.                     }
  506.                     int l = ff(n, n1);
  507.                     Console.Write("\nМаксимальный поток:" + l + "\n");
  508.                     continue;
  509.                 }
  510.                 //конец Форда-Фалкенсона
  511.                 //Дейкстра
  512.                 if (change == 9)
  513.                 {
  514.                     for (int i = 0; i < 20; i++) for (int j = 0; j < 20; j++)
  515.                         {
  516.                             dec[i, j] = 99;
  517.                         }
  518.                     for (int i = 0; i < 20; i++)
  519.                     {
  520.                         for (int j = 0; j < og[i].Length / 2; j++)
  521.                         {
  522.                             { dec[i, og[i][j, 0]] = og[i][j, 1]; }
  523.                         }
  524.                     }
  525.                     Console.Write("\nНомер вершины(0-19):\n");
  526.                     str = Console.ReadLine();
  527.                     n = int.Parse(str);
  528.                     adec(n);
  529.  
  530.                     Console.Write("\nВершина:\n");
  531.                     for (int i = 0; i < 20; i++)
  532.                     {
  533.                         if (i < 10) Console.Write(" ");
  534.                         Console.Write(i + " ");
  535.                     }
  536.                     Console.Write("\n");
  537.                     for (int i = 0; i < 20; i++)
  538.                     {
  539.                         if (d1[i] < 10) Console.Write(" ");
  540.                         Console.Write(d1[i] + " ");
  541.                     }
  542.                     Console.Write("\n-Путь из вершины\n");
  543.                     continue;
  544.                 }
  545.                 //Дейкстра
  546.                 Console.Read();
  547.             }
  548.         }
  549.     }
  550. }
Add Comment
Please, Sign In to add comment