Добавить main.cpp

This commit is contained in:
anqude 2025-05-31 06:38:47 +00:00
parent b6525ee6db
commit 863c15035f

76
main.cpp Normal file
View File

@ -0,0 +1,76 @@
#include <iostream>
#include <vector>
using namespace std;
void printMatrix(const vector<vector<int>>& 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<vector<int>>& graph, int n)
{
vector<vector<int>> 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<vector<int>> graph(n, vector<int>(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;
}