Exemplo n.º 1
0
        public void DoIt()
        {
            var helpList = new int[_graf.GetVertexCount()];

            foreach (var edge in _graf.GetEdgeList())
            {
                helpList[edge.StartVertex - 1]++;
                helpList[edge.FinishVertex - 1]++;
            }
            var counter = 0;

            foreach (var numOfVertex in helpList)
            {
                if (numOfVertex == 0)
                {
                    _result = "Нет Эйлерова цикла, граф несвязный";
                    return;
                }
                counter += numOfVertex % 2;
            }
            var floyd = new Floyd(_graf);
            var flag  = true;

            foreach (var edge in floyd.Matrix)
            {
                if (edge > 99999)
                {
                    flag = false;
                }
            }
            if (flag)
            {
                if (counter == 0)
                {
                    _result = "Есть Эйлеров цикл";
                    if (_mainDrawer.GetCheckedVetex() < 0)
                    {
                        return;
                    }
                    _mainDrawer.TimingDraw(GetEdgeList());
                    return;
                }
                else
                {
                    _result = "Нет Эйлерова цикла, есть вершины с нечетной степенью";
                    return;
                }
            }
            else
            {
                _result = "Нет Эйлерова цикла, граф несвязный";
                return;
            }
        }
Exemplo n.º 2
0
        internal static int[,] GetMatrix(Graf graf)
        {
            var count  = graf.GetVertexCount();
            var matrix = new int[count, count];

            foreach (var edge in graf.GetEdgeList())
            {
                if (edge.Route)
                {
                    matrix[edge.StartVertex - 1, edge.FinishVertex - 1] = edge.Weight;
                }
                else
                {
                    matrix[edge.StartVertex - 1, edge.FinishVertex - 1] = edge.Weight;
                    matrix[edge.FinishVertex - 1, edge.StartVertex - 1] = edge.Weight;
                }
            }

            return(matrix);
        }