直接上代码
bool find(int s)
{
for (int i=1;i<=n;i++)//从1到n编号
{
if (map[s][i] && !visit[i])
{
visit[i]=1;
if (pre[i]==0 || find(pre[i]))
{
pre[i]=s;
return true;
}
}
return false;
}
int hungary()//返回最大匹配数
{
int ans=0;
for (int i=1;i<=n;i++)
{
memset(visit,0,sizeof(visit));
if (find(i)) ans++;
}
return ans;
}
好吧,具体的代码就应该是这样了,但是二分图是无向图吧。。。有向图,怎么破...