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; } }
public void DoIt() { var dfs = new DFS(_graf); dfs.ApplyAlgoritm(_mainDrawer.GetCheckedVetex()); _vetexNumList = dfs.VisitedVertex; if (dfs.EdgeList.Count != 0) { _mainDrawer.TimingDraw(dfs.EdgeList); } }
public void DoIt() { var bfs = new BFS(_graf); bfs.ApplyAlgoritm(_mainDrawer.GetCheckedVetex()); _vetexNumList = bfs.CheckList; if (bfs.EdgeList.Count != 0) { _mainDrawer.TimingDraw(bfs.EdgeList); } }
public void DoAlgoritm(CheckEx checkEx) { if (checkEx.RGR) { _ex = new RGR(_graf); } if (checkEx.Laba4BFS) { _ex = new Laba4BFS(_mainDrawer, _graf); if (_mainDrawer.GetCheckedVetex() < 0) { return; } } if (checkEx.Laba4DFS) { _ex = new Laba4DFS(_mainDrawer, _graf); if (_mainDrawer.GetCheckedVetex() < 0) { return; } } if (checkEx.Laba5) { _ex = new Laba5(_mainDrawer, _graf); } if (checkEx.Laba6) { if (!_mainDrawer.FullListForDej()) { return; } _ex = new Laba6(_mainDrawer, _graf); } _ex.DoIt(); algoritmComplete?.Invoke(); }