1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
| Krjuger |
7.11.2010 20:00
Сообщение
#1
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Дан граф. Требуется построить для него матрицу расстояний. Если пути не существует, тщ елемент матрици равен -1.Для висячих вершин (вершин степени 0) положим так же -1, для всех остальных вершин на диагонале положим 2.
Ввод: граф, представленный в формате FO. Размер графа не более 150 вершин. Тобиш при вводе в программу. 5 0 3 4 0 2 5 0 2 5 0 3 4 0 я должен получить результат -1 -1 -1 -1 -1 -1 2 1 1 2 -1 1 2 2 1 -1 1 2 2 1 -1 2 1 1 2 Задачу надо решить успользуя алгоритм Флойда.Для его использования надо исходные данные преобразовать в матрицу смежности,вот тут то у меня и возникли проблемы.
Как я не старался получить что либо более сносное,ничего не вышло,поэтому прошу помощи. |
| volvo |
7.11.2010 22:29
Сообщение
#2
|
|
Гость |
Ну, ты б для начала проверил, правильно ли заполняется матрица смежности. Я бы сделал так:
#include <iostream> На твоих входных данных выдает:
(элементы главной диагонали были сброшены в ноль, по привычке. Можешь потом пройтись по матрице и заполнить их чем угодно.) |
| Krjuger |
8.11.2010 1:34
Сообщение
#3
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Спасибо огромное,я изначально понимал,что именно в преобразовани в смежную матрицу у меня проблемы.Но вот самому исправить не вышло.На необходимое мне значение на диагонали я поменял,но тут с приведенными тобой исправлениями все равно выходит небольшая накладка.По условию,если точка висячая,тобиш не соединяется с другими,то ее значение должно быть -1,а в приведенном коде выходит 0 т.к. лежит на диагонали.Я согласен что это бред,но таково задание.
В общем я чуть чуть изменил под свои требования и вышло вот так.
|
| Krjuger |
8.11.2010 12:17
Сообщение
#4
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Так,я немного погорячился,так что то что в предыдущем после не решает мою,проблему,так что буду думать пока то сам.Как идея ввести переменную в которой будет храниться позиция переменной t,если t=0 и позиция ее 1 то вершина висячая и элемент на диагонали равен -1,а если позиция не первая, то как минимум с 1 вершиной данная соединена ребром и значит на диагонали будет 2.Щас попробую это реализовать.
Добавлено через 9 мин. В общем,в итоге вот программа,которую я сдал.
|
![]() ![]() |
|
Текстовая версия | 8.12.2025 13:46 |