213、【图论】有向图的完全联通(Python)

题目描述


原题链接:105. 有向图的完全联通

代码实现

python 复制代码
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.有向图的完全可达性

相关推荐
勇闯逆流河35 分钟前
【C++】C++11(下)
开发语言·c++
云栈开源日记38 分钟前
Python 开发技术栈梳理:从数据库、爬虫到 Django 与机器学习
数据库·爬虫·python·学习·机器学习·django
青衫码上行39 分钟前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
胡萝卜3.06 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
电子_咸鱼7 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
哈茶真的c7 小时前
【书籍心得】左耳听风:传奇程序员练级攻略
java·c语言·python·go
沐知全栈开发7 小时前
ionic 选项卡栏操作详解
开发语言
曹牧7 小时前
C#中,#region和#endregion
开发语言·c#
顾安r7 小时前
11.22 脚本打包APP 排错指南
linux·服务器·开发语言·前端·flask
蒙小萌19938 小时前
Swift UIKit MVVM + RxSwift Development Rules
开发语言·prompt·swift·rxswift