'''
def dfs(num,i,visit):
for k in num[i]:
if visit[k] ==False:
visit[k] = True
dfs(num,k,visit)
'''
import collections
path = set()
def bfs(i,graph):
global path
que = collections.deque([i])
while que:
n = que.popleft()
path.add(n)
for j in graph[n]:
que.append(j)
graph[n] = []
return
def main():
n,m = map(int,input().split())
num = [[] for i in range(n+1)]
for i in range(m):
a,b = map(int,input().split())
num[a].append(b)
bfs(1,num)
if path == {i for i in range(1,n+1)}: # 不能用() 只能用{},圆括号用于生成元组,花括号用于生成集合
return 1
return -1
'''
visit = [False]*(n+1)
visit[1] = True
dfs(num,1,visit)
for i in range(1,n+1):
if visit[i] == False:
return -1
return 1
'''
if __name__ == '__main__':
print(main())
有向图的完全可达性
于 2025-03-19 00:00:09 首次发布