並查集模板

並查集spa

1.合併兩個集合code

2.查詢兩個數是否在一個集合blog

基本原理:class

每一個集合用一棵樹來表示,樹根的編號就是整個集合的編號,每一個結點存儲他的父節點,p[x]表示x的父節點原理

1.是不是一個集合 if( find(a)==find(b) )im

2.合併兩個集合 p[find(a)]=find(b) 查詢

        static int p[]=new int[N];
        static int find(int x){ //返回x的祖宗結點+路徑壓縮
                if(p[x]!=x) p[x]=find(p[x]);
                return p[x];
        }

相關文章
相關標籤/搜索