Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (IsPossible(mA)) //если наш граф чётный
- {
- if (HasntZeroVersh(mA,count)) //если количество вершин не равно нулю
- {
- st.Push(start); //добавляем текущую вершину в стек ст
- while (st.Count() != 0) //пока стек ст не пуст
- {
- if (hasPathes(maCopy, count, start)) //если из текущей вершины остались рёбра
- {
- int i = 0;
- for (; i < count; i++) //берём первую попавшуюся смежную вершину
- {
- if (maCopy[start, i] != 0 && maCopy[start, i] != 100000)
- break;
- }
- maCopy[start, i] = 100000; //делаем её недоступной для попадания из текущей вершины
- maCopy[i, start] = 100000;
- start = i; //делаем выбранную вершину текущей и заносим в стек ст
- st.Push(start);
- }
- else //если из текущей вершины не осталось рёбер, то
- {
- ce.Push((st.Pop() + 1)); //выгружаем вершину стека ст в стек пути(не путю)
- if (st.Count() != 0) //если стек ст не пуст то делаем вершину стека текущей вершиной
- start = st.Peek();
- }
- }
- while (st.Count() != 0) //выгружаем содержимое стека СТ в стек пути(не путю)
- {
- ce.Push(st.Pop() + 1);
- }
- while (ce.Count() != 0) //выгружаем содержимое стека пути в строку пути
- {
- path += (ce.Pop()).ToString() + "->";
- }
- path = path.Substring(0, path.Length - 2);//так как у нас остаётся стрелочка из символов слева, } } // удалим её из нашей вершины
- else path = "Цикл невозможен так как граф имеет изолированные вершины";
- }
- else path = "Цикл невозможен так как граф не связный";
- return path;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement