#coding:utf-8 # class Point: # def __init__(self, a=0, b=0): # self.x = a # self.y = b # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 能回到1号点返回 Yes,否则返回 No # @param param int整型一维数组 param[0] 为 n,param[1] 为 m # @param edge Point类一维数组 Point.x , Point.y 分别为一条边的两个点 # @return string字符串 # class Solution: def solve(self , param , edge): visited = set() # 记录访问过的点 # 深度优先搜索(DFS) def dfs(node, parent): if node in visited: return node == 1 # 如果回到 1 号点,说明形成了环 visited.add(node) for e in edge: if e.x == node and e.y != parent: if dfs(e.y, node): # 发现环,直接返回 True return True elif e.y == node and e.x != parent: if dfs(e.x, node): # 发现环,直接返回 True return True return False # 这一轮 DFS 没找到环,返回 False # 先检查 1 号点是否有连接的边 if not any(e.x == 1 or e.y == 1 for e in edge): return "No" # 从 1 号点开始 DFS if dfs(1, -1): return "Yes" return "No"