#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>(n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin » adj_matrix[i][j];
if (adj_matrix[i][j] == 0 && i != j) {
adj_matrix[i][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[i][j] = min(adj_matrix[i][j], adj_matrix[i][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[i][j];
}
if (sum_dist < min_sum_dist) {
min_sum_dist = sum_dist;
median = i;
}
}
cout « "Медиана графа: " « median « endl;
return 0;
}
C/C++
Мой код полюбуйтесь оцените на c++
Очевидно, это не твой код: символы » и « в коде показывают, что ты его откуда-то скопипастил и ни разу не попытался запустить.
"Ответы" не занимаются преобразованием << и >>.
"Ответы" не занимаются преобразованием << и >>.
Андрей Мацко
ахахаха, как раскусили меня) На самом деле мне надо было просто этот код с телефона перенести на компьютер в компьютерной аудитории в вузе. И я воспользовался тем, что в мэил ответах всё в общем доступе. Это просто вопрос-заглушка. Я вообще не ждал, что на него будут отвечать и анализировать
Перепишем:
#include
#include
#include
using namespace std;
const int INF = numeric_limits::max();
int main()
{
setlocale(LC_ALL, "Rus");
int n;
cout > n;
cout > adj_matrix[i][j];
if (adj_matrix[i][j] == 0 && i != j)
adj_matrix[i][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[i][j] = min(adj_matrix[i][j], adj_matrix[i][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[i][j];
if (sum_dist < min_sum_dist)
{
min_sum_dist = sum_dist;
median = i;
}
}
cout
0/10 за оформление не в
ну и за namespace std
// код
И без отступовну и за namespace std
Этот код решает задачу нахождения медианы графа, то есть такой вершины, для которой сумма расстояний до всех остальных вершин минимальна.
Сначала выполняется алгоритм Флойда-Уоршелла для построения матрицы кратчайших расстояний между всеми парами вершин. Затем, для каждой вершины считается сумма расстояний до всех остальных вершин графа. Наконец, выбирается такая вершина, для которой сумма расстояний минимальна, и она выводится как медиана графа.
Этот алгоритм может быть полезен, например, при планировании логистики: в качестве медианы может быть выбран центр склада или дистрибуции, откуда наименьшее расстояние до всех остальных городов.
7/10
Сначала выполняется алгоритм Флойда-Уоршелла для построения матрицы кратчайших расстояний между всеми парами вершин. Затем, для каждой вершины считается сумма расстояний до всех остальных вершин графа. Наконец, выбирается такая вершина, для которой сумма расстояний минимальна, и она выводится как медиана графа.
Этот алгоритм может быть полезен, например, при планировании логистики: в качестве медианы может быть выбран центр склада или дистрибуции, откуда наименьшее расстояние до всех остальных городов.
7/10
Похожие вопросы
- Написать код для задачи на C++
- Код для программы на C++
- Помогите с кодом C++
- Ошибки в коде c++
- Что не так с кодом C++ ?
- Написать код для задачи C++
- Как оптимизировать код, чтобы не было превышения по времени к задаче (C++, динамическое программирование)?
- Как оптимизировать код, чтобы не было превышения по времени к задаче (C++)?
- Задание на C++. Помощь с кодом.
- Помогите пожалуйста написать код.(C++)