Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 KB | None | 0 0
  1. if (IsPossible(mA)) //если наш граф чётный
  2.             {
  3.                 if (HasntZeroVersh(mA,count)) //если количество вершин не равно нулю
  4.                 {
  5.                     st.Push(start); //добавляем текущую вершину в стек ст
  6.                     while (st.Count() != 0) //пока стек ст не пуст
  7.                     {
  8.                         if (hasPathes(maCopy, count, start)) //если из текущей вершины остались рёбра
  9.                         {
  10.                             int i = 0;
  11.                             for (; i < count; i++) //берём первую попавшуюся смежную вершину
  12.                             {
  13.                                 if (maCopy[start, i] != 0 && maCopy[start, i] != 100000)
  14.                                     break;
  15.                             }
  16.                             maCopy[start, i] = 100000; //делаем её недоступной для попадания из текущей вершины
  17.                             maCopy[i, start] = 100000;
  18.                             start = i; //делаем выбранную вершину текущей и заносим в стек ст
  19.                             st.Push(start);
  20.                         }
  21.                         else //если из текущей вершины не осталось рёбер, то
  22.                         {
  23.                             ce.Push((st.Pop() + 1)); //выгружаем вершину стека ст в стек пути(не путю)
  24.                             if (st.Count() != 0) //если стек ст не пуст то делаем вершину стека текущей вершиной
  25.                                 start = st.Peek();
  26.                         }
  27.                     }
  28.                     while (st.Count() != 0) //выгружаем содержимое стека СТ в стек пути(не путю)
  29.                     {
  30.                         ce.Push(st.Pop() + 1);
  31.                     }
  32.                     while (ce.Count() != 0) //выгружаем содержимое стека пути в строку пути
  33.                     {
  34.                         path += (ce.Pop()).ToString() + "->";
  35.                     }
  36.                     path = path.Substring(0, path.Length - 2);//так как у нас остаётся стрелочка из символов слева,                }      }               // удалим её из нашей вершины
  37.  
  38.                 else path = "Цикл невозможен так как граф имеет изолированные вершины";
  39.             }
  40.             else path = "Цикл невозможен так как граф не связный";
  41.             return path;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement