![](https://img.haomeiwen.com/i14018657/878f2f532d103280.png)
1.png
# 使用广度优先搜索寻找输入节点到各个节点的最短路径,也就是跳数,基于无权图,第一次学这个,大部分代码都是借鉴的老师的。。不过基本理解了
import queue as que
if __name__ == '__main__':
# 顶点之间的关系,
list_data = [
# 0 1 2 3 4
[0, 1, 0, 1, 0], # 0
[0, 0, 1, 0, 0], # 1
[1, 0, 0, 1, 1], # 2
[0, 0, 0, 0, 1], # 3
[0, 1, 0, 0, 0], # 4
]
list_len = len(list_data)
# 运行时队列
q = que.Queue(list_len)
max_setup = list_len
start = 0 # 开始的顶点位置
q.put(start) # 初始顶点加入队列
min_setup = [max_setup]*max_setup # 到各个点最短的步数组成的数组
# 先将当前走的节点设置步数为0
min_setup[start] = 0
# 队列不空就一直跑
while q.empty() is False:
currentNode = q.get() # 获取到当前节点
for i in range(5):
# currentNode!= i表示找的是线,
# list_data[currentNode][i] == 1表示线可以走
# min_setup[i] == max_setup 表示该节点没走过
if currentNode != i and list_data[currentNode][i] == 1 and min_setup[i] == max_setup:
q.put(i)
min_setup[i] = min_setup[currentNode]+1
print(min_setup) # 打印结果
网友评论