HDU1856_More is better

来源:互联网 发布:单身狗公仔淘宝 编辑:程序博客网 时间:2024/06/05 23:01

并查集水题,题意将直接或间接是朋友的放在一个房间,问一共需要多少房间,代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAX = 10000001;int father[MAX], num[MAX];int n;void init(){    for(int i=0; i<MAX; ++i)    {        father[i] = i;        num[i] = 1;    }}int fin(int x){    return x==father[x] ? x : father[x]=fin(father[x]);}void comb(int a, int b){    int pa = fin(a), pb = fin(b);    if(pa != pb)    {        father[pa] = pb;        num[pb] += num[pa];        num[pa] = 0;    }}void per(){    int Max = 0;    for(int i=0; i<MAX; ++i)    {        if(Max < num[i])            Max = num[i];    }    cout << Max << endl;}int main(){    while(~scanf("%d", &n))    {        int a, b, c = n;        init();        while(c--)        {            scanf("%d%d", &a, &b);            comb(a, b);        }        per();    }    return 0;}


0 0
原创粉丝点击