hdu1856

#include 
#include 
using namespace std;
const int maxn = 10000005;
int f[maxn];
int a[maxn];

void gg()
{
    for(int i = 1; i <= maxn; i++)
    {
        f[i] = i;
        a[i] = 1;
    }
}
int find_fa(int x)
{
    if(f[x] != x) f[x] = find_fa(f[x]);
    return f[x];
}
void hb(int u, int v)
{
    u = find_fa(u);
    v = find_fa(v);
    if(u != v)
    {
        f[u] = v;
        a[v] += a[u];
    }
}
int main()
{
    int n;
    while(scanf("%d", &n)!=EOF)//没有!=eof就不断超时
    {
        gg();
        int u, v, _max = -1;
        for(int i = 0; i < n; i++)
        {
            scanf("%d%d", &u, &v);
            hb(u, v);
            //if(_max < a[v]); _max = a[v];
        }
        for(int i=0; i_max)
                _max=a[i];
        }
        printf("%d\n", _max);
    }
    return 0;
}

你可能感兴趣的:(并查集)