2 条题解

  • 0
    @ 2025-11-14 19:17:03

    无向图联通问题 利用并查集解决

    def main():
        import sys
        #处理输入数据
        n, m, p = map(int, input().split())
        #创建存储列表
        line = [i for i in range(n + 1)]
        """先创建find_root函数 作用是利用递归查找父节点 查找是根源
        union函数会用到"""
        def find_root(x):
            if line[x] != x:
                line[x] = find_root(line[x])
            return line[x]#现在返回的就是父节点了
        #union函数是通过把两个同学的父节点变成一样的来让同学之间产生联系的
        def union(a, b):
            root_a, root_b = find_root(a), find_root(b)
            if root_a != root_b:
                line[root_a] = root_b
        #处理同学关系 
        for _ in range(m):
            a, b = map(int, sys.stdin.readline().strip().split())
            union(a, b)
        
        #进行父节点是否相同判断
        for _ in range(p):
            a, b = map(int, sys.stdin.readline().strip().split())
            if find_root(a) != find_root(b):
                print("No")
            else:
                print("Yes")
    if __name__ == "__main__":
        main()
    
    
      #无注释版本:
    
    ```python
    def main():
        import sys
        n, m, p = map(int, input().split())
        line = [i for i in range(n + 1)]
        
        def find_root(x):
            if line[x] != x:
                line[x] = find_root(line[x])
            return line[x]
        
        def union(a, b):
            root_a, root_b = find_root(a), find_root(b)
            if root_a != root_b:
                line[root_a] = root_b
         
        for _ in range(m):
            a, b = map(int, sys.stdin.readline().strip().split())
            union(a, b)
        
        for _ in range(p):
            a, b = map(int, sys.stdin.readline().strip().split())
            if find_root(a) != find_root(b):
                print("No")
            else:
                print("Yes")
    
    if __name__ == "__main__":
        main()
    

    [2025 实验室三面] 来自理事长的委托!

    信息

    ID
    1123
    时间
    2000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    40
    已通过
    15
    上传者