Мой код полюбуйтесь оцените на c++ - Вопросы по С+

Вопрос Мой код полюбуйтесь оцените на c++

Регистрация
4 Янв 2013
Сообщения
84
Репутация
0
Спасибо
0
Монет
0
#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[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;



}
 
Регистрация
13 Дек 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Очевидно, это не твой код: символы » и « в коде показывают, что ты его откуда-то скопипастил и ни разу не попытался запустить.

"Ответы" не занимаются преобразованием << и >>.
 
Регистрация
14 Фев 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Перепишем: #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[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
 
Регистрация
8 Ноя 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Этот код решает задачу нахождения медианы графа, то есть такой вершины, для которой сумма расстояний до всех остальных вершин минимальна.

Сначала выполняется алгоритм Флойда-Уоршелла для построения матрицы кратчайших расстояний между всеми парами вершин. Затем, для каждой вершины считается сумма расстояний до всех остальных вершин графа. Наконец, выбирается такая вершина, для которой сумма расстояний минимальна, и она выводится как медиана графа.

Этот алгоритм может быть полезен, например, при планировании логистики: в качестве медианы может быть выбран центр склада или дистрибуции, откуда наименьшее расстояние до всех остальных городов.

7/10
 
Сверху Снизу