построение списка смежности

Третий матч в google для «C ++ slicing» дает мне эту статью в Википедии http://en.wikipedia.org/wiki/Object_slicing и этот (нагретый, но первые несколько сообщений определяют проблему ): http://bytes.com/forum/thread163565.html

Таким образом, это когда вы назначаете объект подкласса суперклассу. Суперкласс ничего не знает о дополнительной информации в подклассе и не имеет места для его хранения, поэтому дополнительная информация получает «отрезанный».

Если эти ссылки не дают достаточной информации для «хороший ответ», пожалуйста, отредактируйте свой вопрос, чтобы сообщить нам, что еще вы ищете.

1
задан spidermarn 24 March 2019 в 14:11
поделиться

1 ответ

Ваша adjacencyList конструкция неверна.

Заменить adjacencyList[i[0]].append(i[0]) на adjacencyList[i[0]].append(i[1]). Я не вижу никаких петель внутри другого. Ваша сложность времени составляет O(n).

Цель adjacencyList - сохранить все смежные узлы для данного узла, в вашем случае это индекс списка.

После изменения ваш вывод должен быть

[[1, 2], [0, 3], [0, 4, 5], [1], [2, 6], [2], [4]]

Отсюда вы можете интерпретировать, что 0 имеет 1 и 2 в качестве соседей. 2 имеет 0 и 3 соседей, 3 имеет 0,4 и 5 в качестве соседей и т. Д.

Обратите внимание, что этот подход не работает, если у вас есть такие узлы, как {2, 60, 1000, 4}. В этом случае лучше использовать словарь узлов и список соседей.

0
ответ дан dodekja 24 March 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: