hdu1068 Girls and Boys 最大独立集

来源:互联网 发布:象棋哪个软件好 编辑:程序博客网 时间:2024/05/16 07:38

最大独立集=点数-最大匹配
这题是双向边所以最大匹配/2
#include<stdio.h>#include<string.h>int m,n,u,use[503],st[503][503],link[503];int find(int v){    int i,j;    for(i=1;i<=m;i++)    {        if(st[v][i]&&!use[i])        {            use[i]=1;            if(!link[i]||find(link[i]))            {                link[i]=v;                return 1;            }        }    }    return 0;}int max(){    int i,ans=0;    memset(link,0,sizeof(link));    for(i=1;i<=m;i++)    {        memset(use,0,sizeof(use));        if(find(i))        ans++;    }    return ans;}int main(){    while(~scanf("%d",&m)&&m)    {        int i,j,x,y,z;        memset(st,0,sizeof(st));        for(i=1;i<=m;i++)        {        scanf("%d: (%d)",&x,&y);        for(j=0;j<y;j++)        {        scanf("%d",&z);        st[i][z+1]=1;        }        }        int zs;        zs=max();         printf("%d\n",m-zs/2);    }    return 0;}

最小独立点集=点数——最大匹配

这题是双向边所以最大匹配/2


原创粉丝点击