Ошибка выполнения алгоритма bfs для получения расстояния до каждого узла от начального узлаPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Ошибка выполнения алгоритма bfs для получения расстояния до каждого узла от начального узла

Сообщение Гость »


Я решаю проблему с хакерским рейтингом: кратчайший доступ к BFS

подсказка о проблеме и образец ввода

Мое решение работает для всех случаев, кроме 1. Кажется, возникает ошибка во время выполнения для очень больших размеров входных данных. Я оптимизировал все, что мог, например, используя алгоритм линейного бега. Единственное, что, как я думаю, может испортить мою эффективность использования времени, это, возможно, раздел обработки ввода, где я помещаю все свои данные в hashMap. Однако это всего лишь O(edges), то есть размер заданного массива ребер.

Любые подсказки были бы полезны. Завтра собеседование по программированию :)

Изображение ошибки выполнения

какой результат мне нужен

def bfs(n, m, ребра, s): # Напишите здесь свой код # создаем хэш-карту, содержащую вершины adj resList = [-1] * n # обработка ввода adjMap = {} для края в краях: если край[0] отсутствует в adjMap: новыйSet = установить() adjMap[edge[0]] = новыйSet если край[1] отсутствует в adjMap: новыйSet = установить() adjMap[edge[1]] = новыйSet adjMap[edge[0]].add(край[1]) adjMap[edge[1]].add(край[0]) очередь = дек() valQueue = дек() посетил = установить() # инициализировать очередь очередь.append(ы) valQueue.append(0) resList = 0 посетил.добавить(я) пока очередь: # dequeueNode = очередь.pop(0) dequeueNode = очередь.popleft() # dequeueNodeVal = valQueue.pop(0) dequeueNodeVal = valQueue.popleft() adjSet = adjMap[dequeueNode] для adj в adjSet: если прил не посещен: посетил.добавить(прил.) очередь.добавление(прилаг) valQueue.append(dequeueNodeVal + 6) resList[adj - 1] = dequeueNodeVal + 6 resList.remove(0) вернуть список результатов Изначально моя очередь представляла собой просто список

очередь = [] очередь.append(бла) очередь.поп(0) Как и в случае с началом списка, который, как я знаю, неэффективен, поскольку требует переиндексации. В любом случае я изменил его на модуль deque из коллекций, поскольку знаю, что это более эффективно. В остальном я совсем застрял.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создайте расчет расстояния расстояния в WordPress
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Создайте расчет расстояния расстояния в WordPress
    Anonymous » » в форуме Javascript
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Проблема со списком узлов начального узла в пользовательском форке Monero (Nefeli-Core)
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при составлении "| 75 | Ошибка: не может преобразовать 'std :: vector ' в 'int'" при реализации BFS
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Сравнение чистого алгоритма Дейкстры и оптимизированного алгоритма Дейкстры с двоичной кучей и кучей Фибоначчи
    Anonymous » » в форуме Python
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»