# 人工智能课程 03：Python 3 标准库教学示例
# 无外部网络调用；修改输入后可观察结果。
from collections import deque
graph = {'S': ['A', 'B'], 'A': ['C'], 'B': ['D'], 'C': ['D'], 'D': ['G'], 'G': []}
queue = deque([['S']])
seen = {'S'}
while queue:
    path = queue.popleft()
    if path[-1] == 'G':
        print(path); break
    for node in graph[path[-1]]:
        if node not in seen:
            seen.add(node)
            queue.append(path + [node])
