Compare commits
No commits in common. "lab5" and "main" have entirely different histories.
76
main.cpp
76
main.cpp
@ -1,76 +0,0 @@
|
|||||||
#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