C2. Party

题意:额,只要注意each的意思

做法:基本的并查集技术,只要理解了each的意思...

#include<cstdio>
#define LMT 2002
using namespace std;
int get[LMT],fs,father[LMT];
int work(int u)
{
    int x=u;
    while(x!=father[x])
        x=father[x];
    father[u]=x;
    return x;
}
int main(void)
{
    int i,n,k,m,u,v,a,b,ans;
    scanf("%d",&n);
    scanf("%d",&k);
    for(i=1;i<=n;i++)
    {
        get[i]=1;
        father[i]=i;
    }
    while(k--)
    {
        scanf("%d%d",&u,&v);
        a=work(u);b=work(v);
        if(a!=b)
        {
            get[a]+=get[b];
            father[b]=a;
        }
    }
    scanf("%d",&m);
    while(m--)
    {
        scanf("%d%d",&u,&v);
        a=work(u);b=work(v);
        if(a==b)get[a]=0;
    }
    ans=0;
    for(i=1;i<=n;i++)
    if(i==work(i)&&ans<get[i])
    ans=get[i];
    printf("%d\n",ans);
    return 0;
}


你可能感兴趣的:(C2. Party)