首页 > 其他 > 详细

POJ1611 The Suspects: 并查集入门

时间:2015-07-23 21:17:19      阅读:154      评论:0      收藏:0      [点我收藏+]
#include<iostream>
using namespace std;
#define Size 30000
int Pre[Size+1], Sum[Size+1];// Sum[i] 表示 第i组 的人数

int Get_Pre( int a )
{
        if( Pre[a]!=a )
            a = Get_Pre( Pre[a] );// 路径压缩
        return a;
}

void Union( int a, int b )
{
        int P1 = Get_Pre(a);
        int P2 = Get_Pre(b);
        if( P1 == P2 )
            return ;
        Pre[P2] = P1;
        Sum[P1] += Sum[P2];
}

int main()
{
        int n, m;
        while( cin>>n>>m && n!=0 )
        {
                for( int i=0; i<n; i++ )
                {
                        Pre[i] = i;     Sum[i]=1;
                }
                int k, N1, N2;
                for( int i=0; i<m; i++ )
                {
                        cin>>k;
                        cin>>N1;
                        for( int j= 1; j<k; j++ ){
                                cin>>N2;
                                Union( N1, N2 );
                        }
                }
                cout<<Sum[Get_Pre(0)]<<endl;
        }
        return 0;
}

 

POJ1611 The Suspects: 并查集入门

原文:http://www.cnblogs.com/FightForCMU/p/4671543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!