public void CorrectMatrixTest() { var graph = new DirectedWeightedGraph <int>(10); var vertex1 = graph.AddVertex(1); var vertex2 = graph.AddVertex(2); var vertex3 = graph.AddVertex(3); var vertex4 = graph.AddVertex(4); var vertex5 = graph.AddVertex(5); graph.AddEdge(vertex1, vertex2, 3); graph.AddEdge(vertex1, vertex5, -4); graph.AddEdge(vertex1, vertex3, 8); graph.AddEdge(vertex2, vertex5, 7); graph.AddEdge(vertex2, vertex4, 1); graph.AddEdge(vertex3, vertex2, 4); graph.AddEdge(vertex4, vertex3, -5); graph.AddEdge(vertex4, vertex1, 2); graph.AddEdge(vertex5, vertex4, 6); var actualDistances = new double[, ] { { 0, 1, -3, 2, -4 }, { 3, 0, -4, 1, -1 }, { 7, 4, 0, 5, 3 }, { 2, -1, -5, 0, -2 }, { 8, 5, 1, 6, 0 }, }; var floydWarshaller = new FloydWarshall <int>(); floydWarshaller.Run(graph).Should().Equal(actualDistances); }
private static bool[] RunFloydWarshall(Vertex[] vertices, int source) { int[,] depths = FloydWarshall.Run(vertices); return(Enumerable.Range(0, vertices.Length).Select(i => depths[source, i] != int.MaxValue).ToArray()); }
private static int[,] RunFloydWarshall(Vertex[] vertices) { return(FloydWarshall.Run(vertices)); }