时间复杂度:O(N * M)
bool dfs(int x)
{
for(int i = h[x]; ~ i ; i = ne[i] )
{
int y = e[i];
if(!visit[y])
{
visit[y] = 1;
if(!match[y] || dfs(match[y]))
{
match[y] = x;
return true;
}
}
}
return false;
}
int main()
{
for(int i = 1; i <= n; i ++ )
{
memset(visit, 0, sizeof visit);
if(dfs(i)) ans ++ ;
}
}