#include #include using namespace std; void printMatrix(const vector>& matrix, int k) { cout << "W" << k << ":\n"; int n = matrix.size(); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << matrix[i][j] << " "; } cout << "\n"; } cout << "\n"; } void Warshall(vector>& graph, int n) { vector> W = graph; // Копия исходной матрицы printMatrix(W, 0); // W0 или M for (int k = 0; k < n; ++k) { for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { W[i][j] = W[i][j] or (W[i][k] and W[k][j]); } } printMatrix(W, k + 1); // W1 ... Wn } } int main() { int n; cout << "Введите размер матрицы смежности: "; cin >> n; while (n <= 0) { cout << "Введите корректный размер: "; cin >> n; } vector> graph(n, vector(n)); cout << "Введите матрицу смежности (" << n << " строк по " << n << " чисел):\n"; for (int i = 0; i < n; ++i) { cout<<"Строка " << i+1<<": "; for (int j = 0; j < n; ++j) { int value; while (true) { cin >> value; if (value != 0 && value != 1) { cout << "Некорректное значение. Введите 0 или 1: "; } else { break; } } graph[i][j] = value; } } cout << "\n"; Warshall(graph, n); return 0; }