public void UndirectedCreateIsCorrectlyBuilt() { var input = CreateTestInput(); var g = new Graph(GraphType.Undirected, input, 7); Assert.AreEqual(7, g.Vertices()); Assert.AreEqual(10, g.Edges()); Assert.AreEqual(3, g.Adjacent(0).Count); Assert.AreEqual(1, g.Adjacent(1).Count); Assert.AreEqual(2, g.Adjacent(2).Count); Assert.AreEqual(1, g.Adjacent(3).Count); Assert.AreEqual(0, g.Adjacent(4).Count); Assert.AreEqual(2, g.Adjacent(5).Count); Assert.AreEqual(1, g.Adjacent(6).Count); }
public void BreadthFirstSearch(Graph graph, int root) { var vertices = new Queue<int>(); vertices.Enqueue(root); distTo[root] = 0; marked[root] = true; count++; while (vertices.Count > 0) { var currentVertice = vertices.Dequeue(); foreach (var vert in graph.Adjacent(currentVertice)) { if (!marked[vert]) { edgeTo[vert] = currentVertice; distTo[vert] = distTo[currentVertice] + 1; marked[vert] = true; count++; vertices.Enqueue(vert); } } } }