题目描述
原题链接:105. 有向图的完全联通
代码实现
import collections
n, k = list(map(int, input().split()))
adjacency = collections.defaultdict(list)
for _ in range(k):
head, tail = list(map(int, input().split()))
adjacency[head].append(tail)
visited_node = set()
def bfs(root, adjacency):
global visited_node
deque = collections.deque()
deque.append(root)
# 每次从队列中取出一个节点,查看邻接表中邻接的节点加入其中,进行BFS
while deque:
node = deque.popleft()
visited_node.add(node) # 遍历过该节点则记录,最后看N个节点是否能被遍历完
for tail in adjacency[node]:
deque.append(tail)
del adjacency[node]
return
# 使用BFS从1开始遍历,如果所有节点可以被遍历完,则说明完全联通
bfs(1, adjacency)
if len(visited_node) == n:
print(1)
else:
print(-1)
参考文章:105.有向图的完全可达性