Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 863c15035f |
76
main.cpp
Normal file
76
main.cpp
Normal 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;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user