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

hdu 1213 How Many Tables(并查集)

时间:2016-03-24 12:59:05      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

基本的并查集。 可是 题目里说的There will be a blank line between two cases. 这句话在扯淡吗- - 我还加了换行 PE了两次 后来看网上AC的代码根本不需要啊- -

#include <iostream>
using namespace std;
int p[1005];

void init(int n)
{
    for(int i=1;i<=n;i++)
        p[i]=i;
}

int find(int x)
{
    while(x!=p[x])
        x=p[x];
    return x;
}

void join(int x,int y)
{
    int fx=find(x);
    int fy=find(y);
    if(fx!=fy)
        p[fy]=fx;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        init(n);
        for(int i=1;i<=m;i++)
        {
            int a,b;
            cin>>a>>b;
            join(a,b);
        }

        int sum=0;
        for(int i=1;i<=n;i++)
        {
            if(i==p[i])
                sum++;
        }
        cout<<sum<<endl;
        cout<<endl;
    }
    return 0;
}

 

hdu 1213 How Many Tables(并查集)

标签:

原文地址:http://www.cnblogs.com/luosuo10/p/5314826.html

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