Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 92

Обход в ширину (графы)

01.06.2019, 00:40. Показов 6009. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно решить следующую задачу на Python:
В неориентированном графе требуется найти длину кратчайшего пути между двумя вершинами.

Входные данные
Во входном файле INPUT.TXT записано сначала число N - количество вершин в графе (1 ≤ N ≤ 100). Затем записана матрица смежности (0 обозначает отсутствие ребра, 1 - наличие ребра). Затем записаны номера двух вершин - начальной и конечной.

Выходные данные
В выходной файл OUTPUT.TXT выведите длину кратчайшего пути. Если пути не существует, выведите одно число -1.
Есть код на С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<queue>
using namespace std;
int main() {
int n,i,j,k,f,s;queue<int> q;
cin>>n;int a[n][n],d[n];
for(i=0;i<n;++i)
{
d[i]=1000000000;
for(j=0;j<n;++j)cin>>a[i][j];}
cin>>s>>f;s--;f--;
d[s]=0; q.push(s);
while(!q.empty()){i=q.front();q.pop();
for(j=0;j<n;++j)
if(a[i][j]&&d[j]>d[i]+1){
d[j]=d[i]+1;q.push(j);}}
if(d[f]<1000000000)cout<<d[f];
else cout<<-1;
return 0;}
Пытаюсь его перевести:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n=int(input())
for i in range(n):
    W = [[int(j) for j in input().split()] for i in range(m)]
s,f = map(int, input().split())
q = []
INF = 10000
d = [INF] * n
for i in range(n):
    d[i]=10000
    d[s]=0
    q.append(s);
    while len(q)!=0:
        i=q[0]
        q.pop()
    for j in range(n):
       if(W[i][j] and d[j]>d[i]+1):
           d[j]=d[i]+1
           q.append(j)
if(d[f]<1000000000):
    print([f])
else:
    print(-1)
Не работает
Подскажите где ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2019, 00:40
Ответы с готовыми решениями:

Печать на консоль бинарного дерева, обход в ширину
Добрый вечер! Сразу скажу, топик не для слабонерных. Выручайте уважаемые программисты. Встала задача передо мной написать печать на КОНСОЛЬ...

Графы, обход вершин в ширину и глубину
Граф задан матрицей смежности. Изобразить граф и два его подграфа, получаемые обходом его вершин поиском в глубину и в ширину. Ещё не...

Обход в ширину обход в глубину
помогите написать комментарии к коду def bfs_path(graph, start, end): visited = set() queue = deque(]) ...

2
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
01.06.2019, 11:11
Вы же, помнится, с графами работали с помощью библиотеки NetworkX? Что случилось, что решили переписывать примеры с С++ на Python? )))
По поводу кода как-то странно. Попробуйте просто перепечатать с одного языка на другой. С сохранением последовательности команд. А то исполнение на python в вашем варианте как-то совсем не похоже на вариант С++.
0
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 92
01.06.2019, 15:57  [ТС]
Работала. А сейчас нужно без библиотеки поработать, в общем виде применяя алгоритмы...
Насчет перепечатать, я не знаю языка С++, поэтому и попросила помощи, как смогла, так и перевела)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2019, 15:57
Помогаю со студенческими работами здесь

кто поможет переделать 5 процедуру обход графа в глубину на обход графа в ширину
program kurs_work; uses crt,GraphABC; const n = 6; max = 1000; max_n = 36; var i, j, b : integer; Graf :...

Поиск в ширину (Обход в ширину)
Напишите, пожалуйста, реализацию bfs в с++ и объясните что к чему

Графы, обход графа
Подправить 3,5 и 5 строки , неправильно написано, если есть ошибки то подправьте пожалуйста Program GRAF; Const N=8;M=8; type Matrix...

Графы, обход графа, поиск
Обеспечить хранение графа в виде матрицы смежности Задание : Найти в графе двунаправленным ребра. Добавлено через 33 секунды и...

Графы-Поиск в ширину
В неориентированном графе требуется найти минимальный путь между двумя вершинами. Формат входных данных Первым на вход поступает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru