并查集理论基础 并查集主要有两个功能: 将两个元素添加到一个集合中。判断两个元素在不在同一个集合 复杂度分析 空间复杂度: O(n) ,申请一个father数组。路径压缩后的并查集时间复杂度在O(logn)与O(1)之间,且随着查询或者合并操作的增加,时间复杂度会越来越趋于O(1)。在第一次查询的时候,相当于是n叉树上从叶子节点到根节点的查询过程,时间复杂度是logn,但路径压缩后,后面的查询操作都是O(1),而 join 函数 和 isSame函数 里涉及的查询操作也是一样的过程。 寻找存在的路径 def init():for i in range(n):father[i]=idef find(x):return x if x==father[x] else find(father[x])def join(x,y):x=find(x)y=find(y)if x==y: returnfather[x]=ydef isSame(x,y):x=find(x)y=find(y)return True if x==y else Falseif __name__=='__main__':n,m = map(int, input().split())father = [0]*ninit()for _ in range(m):a,b = map(int, input().split())join(a-1,b-1)s,d = map(int,input().split())if isSame(s-1,d-1):print(1)else:print(0)