#include <iostream>
#include <vector>
#include <limits>
using namespace std;
const int INF = numeric_limits<int>::max();
int main() {
setlocale(LC_ALL, "Rus"
int n;
cout « "Введите размерность матрицы расстояний: ";
cin » n;
cout « "Введите элементы матрицы расстояний: " « endl;
vector<vector<int» adj_matrix(n, vector<int>);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin » adj_matrix[j];
if (adj_matrix[j] == 0 && i != j) {
adj_matrix[j] = INF;
}
}
}
// Алгоритм Флойда-Уоршелла для нахождения кратчайших путей между всеми парами вершин
for (int k = 0; k < n; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
adj_matrix[j] = min(adj_matrix[j], adj_matrix[k] + adj_matrix[k][j]);
}
}
}
int median = -1;
int min_sum_dist = INF;
for (int i = 0; i < n; i++) {
int sum_dist = 0;
for (int j = 0; j < n; j++) {
sum_dist += adj_matrix[j];
}
if (sum_dist < min_sum_dist) {
min_sum_dist = sum_dist;
median = i;
}
}
cout « "Медиана графа: " « median « endl;
return 0;
}
#include <vector>
#include <limits>
using namespace std;
const int INF = numeric_limits<int>::max();
int main() {
setlocale(LC_ALL, "Rus"
int n;
cout « "Введите размерность матрицы расстояний: ";
cin » n;
cout « "Введите элементы матрицы расстояний: " « endl;
vector<vector<int» adj_matrix(n, vector<int>);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin » adj_matrix[j];
if (adj_matrix[j] == 0 && i != j) {
adj_matrix[j] = INF;
}
}
}
// Алгоритм Флойда-Уоршелла для нахождения кратчайших путей между всеми парами вершин
for (int k = 0; k < n; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
adj_matrix[j] = min(adj_matrix[j], adj_matrix[k] + adj_matrix[k][j]);
}
}
}
int median = -1;
int min_sum_dist = INF;
for (int i = 0; i < n; i++) {
int sum_dist = 0;
for (int j = 0; j < n; j++) {
sum_dist += adj_matrix[j];
}
if (sum_dist < min_sum_dist) {
min_sum_dist = sum_dist;
median = i;
}
}
cout « "Медиана графа: " « median « endl;
return 0;
}