题意:FJ有N头cow ,M个stall for the milk 每头只愿在自己喜欢的stall上产奶,求最大匹配。
思路:简单的二分匹配。
//332K
0MS
#include <stdio.h>
#include <string.h>
#define N 205
int mat[N][N],vis[N],xM[N],yM[N];
int n,m;
bool DFS(int u)
{
for (int v = 1;v <= n;v ++)
if (mat[u][v] && !vis[v])
{
vis[v] = 1;
if (yM[v] == -1 ||DFS(yM[v]))
{
yM[v] = u,xM[u] = v;
return true;
}
}
return false;
}
int MaxMatch ()
{
int res = 0;
memset (xM,-1,sizeof(xM));
memset (yM,-1,sizeof(yM));
for (int u = 1;u <= n;u ++)
if (xM[u] == -1)
{
memset (vis,0,sizeof(vis));
if (DFS(u))
res ++;
}
return res;
}
int main ()
{
int u,v,s;
while (~scanf ("%d%d",&n,&m))
{
memset (mat,0,sizeof(mat));
for (u = 1;u <= n;u ++)
{
scanf ("%d",&s);
while (s --)
{
scanf ("%d",&v);
mat[u][v] = 1;
}
}
int ans = MaxMatch ();
printf ("%d\n",ans);
}
return 0;
}
思路:简单的二分匹配。
//332K
#include <stdio.h>
#include <string.h>
#define N 205
int mat[N][N],vis[N],xM[N],yM[N];
int n,m;
bool DFS(int u)
{
}
int MaxMatch ()
{
}
int main ()
{
}