题解 | 连通图

from collections import deque
class Node:
    def __init__(self,elem:int):
        self.elem=elem
        self.next=None
    def add_next(self,next_elem:'Node'):
        self.next=next_elem
    def return_elem(self):
        return self.elem
    def return_next(self):
        return self.next




class graph:
    def __init__(self,n:int,m:int):
        self.node=n
        self.edge=m
        self.node_set=[]
        for i in range(n):
            self.node_set.append(Node(i+1))
    def add_edge(self,start:int,end:int):
        p=self.node_set[start-1]
        while p.next!=None:
            p=p.next
        p.add_next(Node(end))
    def return_node(self,index):
        return self.node_set[index]



def bfs(graph: graph):
    queue = deque()
    queue.append(graph.return_node(0))
    visited = set()
    visited.add(graph.return_node(0).return_elem())

    while queue:
        current_node = queue.popleft()
        current = current_node
        while current.next != None:
            neighbor = current.next
            if neighbor.return_elem() not in visited:
                visited.add(neighbor.return_elem())
                queue.append(graph.return_node(neighbor.return_elem()-1))
            current = current.next

    return visited



if __name__ == "__main__":
    while True:
        try:
            string=input().split()
            n,m=int(string[0]),int(string[1])
            gra=graph(n,m)
            if m==0 and n==0:
                break
            for i in range(m):
                string = input().split()
                start, end = int(string[0]), int(string[1])
                gra.add_edge(start,end)
            #gra.print_next()
            visited=bfs(gra)
            if len(visited)!=n:
                print("NO")
            else:
                print("YES")
        except EOFError:
            break





全部评论

相关推荐

02-26 13:46
湖南大学 Java
Java抽象小篮子:要用外卖就必须得额外包装下,你这没包装好啊,可以看看我的精品贴子汇总,里面有额外扩展了很多技术亮点的魔改外卖话术,和7000字轮子项目话术
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务