并查集 + 路径压缩(经典) UVALive 3027 Corporative Network

时间:2023-03-10 08:05:50
并查集 + 路径压缩(经典) UVALive 3027 Corporative Network

Corporative Network

Problem's Link


Mean:

有n个结点,一开始所有结点都是相互独立的,有两种操作:

I u v:把v设为u的父节点,edge(u,v)的距离为abs(u-v)%1000;

E u:输出u到根节点的距离.

analyse:

经典的并查集习题!Rujia挑选的题目真心不错。

做法很巧妙,但是要对并查集和路径压缩有深入的了解才能想到这种做法。

由于每次E操作都会加入一个新的结点,而且每次都是把一个结点指向另一个结点,所以说不会同时存在两个或两个以上的根节点(画一下图就明白了)。

这就满足了树形结构,而且恰好符合并查集的特点。

定义dis[],其中dis[i]表示i到根节点的距离,那么:

我们在合并路径的时候,同时维护dis的值就可,请看下图:

并查集 + 路径压缩(经典) UVALive 3027 Corporative Network

Time complexity: O(N*logN)

Source code: 

);
     ; ;
           ;
                 ;
}
/*

*/