模板:
int vis[N];
int edge[N][N];
int link[N];
int maxmatch;
bool dfs(int x)
{
int v;
for(v=1; v<=n; v++)
{
if(vis[v]==0&&edge[x][v])
{
vis[v]=1;
if(link[v]==-1||dfs(link[v]))
{
link[v]=u;
return true;
}
}
}
return false;
}
void hungury()
{
maxmatch = 0;
memset(link,-1,sizeof(link));
for(i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
maxmathc++;
}
return ;
}