码迷,mamicode.com
首页 > 其他好文 > 详细

不相交集类

时间:2014-12-01 20:46:50      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   sp   for   on   div   log   

不相交集的类架构

class DisjSets
{
public:
    explicit DisjSets(int numElement);
    int find (int x) const;
    int find (int x);
    void unionSets1(int root1,int root2);
    void unionSets2(int root1,int root2)
private:
    vector<int> s;

};
DisjSets::DisjSets(int numElement):s(numElement)
{
    for (int i=0;i<s.size();i++)
        s[i]=i;
    //不相交集的初始化例程
}

void DisjSets::unionSets1(int root1,int root2)
{
    s[root2]=root1;
}

int DisjSets::find(int x)const
{
    if(s[x]<0)
        return x;
    else
        return find(s[x]);
}
//按高度求并的程序
void DisjSets::unionSets2(int root1,int root2)
{
    if(s[root2]<s[root1])
        s[root1]=root2;
    else
    {
        if(s[root1]==s[root2])
            s[root1]--;
        s[root2] = root1;
    }
}
//路径压缩
int DisjSets::find(int x)
{
    if(s[x]<0)
        return x;
    else
        return s[x]=find(s[x]);
}

 

不相交集类

标签:style   blog   io   color   sp   for   on   div   log   

原文地址:http://www.cnblogs.com/biong-blog/p/4135868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!