首页 > 代码库 > The Perfect Stall

The Perfect Stall

poj1274:http://poj.org/problem?id=1274

题意:有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶牛能够吃到东西

题解:裸的二分图匹配,直接上匈牙利。

 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 const int MAXN=1002; 7 int n,m,k,w,u,v; 8 int cy[MAXN]; 9 bool visit[MAXN];10 bool g[MAXN][MAXN];11 int path(int u){12      for(int i=1;i<=m;i++){13         if(!visit[i]&&g[u][i]){14             visit[i]=1;15         if(cy[i]==-1||path(cy[i])){16             cy[i]=u;17             return 1;18         }19        }20      }21    return 0;22 }23 int maxmatch(){24     memset(cy,-1,sizeof(cy));25     int res=0;26     for(int i=1;i<=n;i++){27     memset(visit,0,sizeof(visit));28         res+=path(i);29     }30     return res;31 }32 int main(){33     while(~scanf("%d%d",&n,&m)&&n){34             memset(g,0,sizeof(g));35           for(int i=1;i<=n;i++){36               scanf("%d",&k);37           while(k--){38             scanf("%d",&w);39              g[i][w]=1;40           }41 42           }43        printf("%d\n",maxmatch());44     }45 }
View Code

 

The Perfect Stall