题意: 初始有n个点,m次操作.每次操作加一条边或者询问两个点第一次连通的时刻(若不连通输出-1). 题解: 用并查集维护每个点所在连通块的根.对于每次加边,暴力的更新新的根. 每次将2个块合并时,将小的块并向大的块.这么合并使得每个点的根最多更新log2n次,并储存每次更新信息(更新时刻以及新的根). 对于每一次询问,二分两个点第一次连通的时刻.对于每一个二分的时刻,求的是两点的根是否相同. 由于存储过了每个点根的更新信息,所以再用二分求出他这个时刻的根. #include <bits/std…