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; } }
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); }