quick-find【连通图】

QUICK-FIND

连通图

#ifndef QUICKFIND_H_
#define QUICKFIND_H_
class  UF
{
    private :
        int *id;                     //分量id
        int count;                   //分量数目
        int length;
    public:
        UF (int N);                        //以整数初始化n个触点
        ~UF (); 
        int UFcount ();                    //连通分量数目
        void UFunion (int p,int q);        //p q之间建立连接
        bool UFconnected (int p,int q);    //若p q之间存在连接
                                           //返回true
        int UFfind (int p);                //p所在分量标识
        int UFlength (void);               //
};
#endif
#include <iostream>
#include "quickfind.h"
UF::UF (int N)
{
    count = N;
    length = N;
    id = new int [N];
    for(int i = 0;i < N; i++)
        id[i] = i;
}
UF::~UF ()
{
    delete [] id;
}
int UF::UFcount ()
{
    return count;
}
void UF::UFunion (int p,int q)
{
    int qid = id[q];
    int pid = id[p];
    if (qid == pid) return;
    for (int i = 0;i < length; i++)
    {
        if (id[i] == pid)
            id[i] = qid;
    }
    count --;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值