Добавить main.cpp
This commit is contained in:
parent
b6525ee6db
commit
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