//głębokie drzewo private (Graph, Graph) Test05() { Graph t = new AdjacencyListsGraph <AVLAdjacencyList>(false, 16); t.AddEdge(0, 3); t.AddEdge(3, 5); t.AddEdge(5, 1); t.AddEdge(1, 6); t.AddEdge(6, 11); t.AddEdge(0, 7); t.AddEdge(7, 10); t.AddEdge(10, 15); t.AddEdge(10, 4); t.AddEdge(4, 8); t.AddEdge(0, 12); t.AddEdge(12, 13); t.AddEdge(13, 2); t.AddEdge(2, 9); t.AddEdge(9, 14); Graph g = t.Clone(); g.AddEdge(3, 12); g.AddEdge(5, 7); g.AddEdge(10, 13); g.AddEdge(4, 13); g.AddEdge(1, 4); g.AddEdge(4, 2); return(g, t); }
//drzewo private (Graph g, Graph t) Test03() { Graph t = new AdjacencyListsGraph <SimpleAdjacencyList>(false, 10); t.AddEdge(0, 1); t.AddEdge(0, 2); t.AddEdge(0, 8); t.AddEdge(1, 9); t.AddEdge(1, 3); t.AddEdge(2, 4); t.AddEdge(2, 6); t.AddEdge(6, 7); t.AddEdge(4, 5); return(t.Clone(), t); }
public override void VerifyTestCase(out Result resultCode, out string message, object settings) { if (cycles == null) { message = "Nie zwrócono wyniku"; resultCode = Result.BadResult; return; } if (!AreEqual(g1, g) || !AreEqual(t1, t)) { message = "Zmodyfikowano grafy"; resultCode = Result.BadResult; return; } Graph tLookup = new AdjacencyListsGraph <HashTableAdjacencyList>(t); Graph gLookup = new AdjacencyListsGraph <HashTableAdjacencyList>(g); var test = gLookup.Clone(); foreach (var e in tLookup.GetEdges()) { test.DelEdge(e); } foreach (var cycle in cycles) { bool notInTree = false; bool[] vertices = new bool[g.VerticesCount]; if (!cycleChecker.Check(cycle, out message)) { resultCode = Result.BadResult; return; } foreach (var e in cycle) { if (!tLookup.ContainsEdge(e)) { if (notInTree) { message = "Wiele krawędzi spoza drzewa"; resultCode = Result.BadResult; return; } notInTree = true; if (!test.ContainsEdge(e)) { message = $"Wiele cykli z krawędzią {e}"; resultCode = Result.BadResult; return; } test.DelEdge(e); } } } if (test.EdgesCount != 0) { var e = test.GetEdges().First(); message = $"Brak cyklu z krawędzią {e}"; resultCode = Result.BadResult; return; } resultCode = Result.Success; message = "OK"; }