HDOJ 1856 More is better

来源:互联网 发布:数据库系统基础 编辑:程序博客网 时间:2024/05/17 00:50

~~~题目链接~~~


code:

#include <stdio.h>#define N 10000002int min = 0, max = 0, r[N], f[N];void init(){    for(int i = 0; i<N; i++)    {        r[i] = 1;        f[i] = i;    }}int find(int x){    if(f[x] != x)        f[x] = find(f[x]);    return f[x];}void Union(int x, int y){    if(r[x]<r[y])    {        r[y] += r[x];        f[x] = y;    }    else    {        f[y] = x;        r[x] += r[y];    }}int ans(){    int i = 0, sum = 0;    for(int i = min; i<=max; i++)        if(sum<r[i]) sum = r[i];    return sum;}int main(){    int i = 0, j = 0, x = 0, y = 0, fx = 0, fy = 0, n = 0, flag = 0;    while(scanf("%d", &n) != EOF)    {        init();        while(n--)        {            scanf("%d %d", &x, &y);            if(max<=x) max = x;            if(max<=y) max = y;            if(min>=x) min = x;            if(min>=y) min = y;            fx = find(x), fy = find(y);            if(fx == fy) continue;            Union(fx, fy);        }        printf("%d\n", ans());    }    return 0;}


原创粉丝点击