internal static void PerformWarshall(BitArray2D adj_matrix) { if (adj_matrix == null) { throw new System.ArgumentNullException(nameof(adj_matrix)); } if (adj_matrix.Width != adj_matrix.Height) { const string msg = "Adjacency Matrix width must equal its height"; throw new System.ArgumentException(msg); } for (int k = 0; k < adj_matrix.Width; k++) { for (int row = 0; row < adj_matrix.Height; row++) { for (int col = 0; col < adj_matrix.Width; col++) { bool v = adj_matrix.Get(row, col) | (adj_matrix.Get(row, k) & adj_matrix.Get(k, col)); adj_matrix[row, col] = v; } } } }