关于并查集的总结

来源:互联网 发布:网络流行红歌 编辑:程序博客网 时间:2024/06/15 22:08

参考了这个博客的内容,学到了很多啊,特别是给出的这个例子很形象。http://blog.sina.com.cn/s/blog_87cb8e680100skd7.html

然后就是这个并查集的模版了

总结归纳就是

int pre[1000 ];
int find(int x){ //查找根节点
int r=x; while (pre[r ]!=r) r=pre[r ]; //返回根结点
int i=x; int j; while(i!=r) { j=pre[i ]; pre[i ]=r; i=j; } //路径压缩
return r;
void join(int x,int y) { //判断x y是否连通
//如果已经连通,就不用管了 //如果不连通,就把它们所在的连通分支合并起,
int fx=find(x),fy=find(y);
if(fx!=fy) pre[fx ]=fy; }

当然具体题目有具体的改变,不过基本就是这样了,会使用即可了。对于白书上两个题目可以利用这个很好的解决。

然后还有其他一些较为高深的并查集在此暂记一笔 http://blog.csdn.net/youngyangyang04/article/details/7453564

0 0
原创粉丝点击