二分最大匹配数

#include
#include
#include
#include
using namespace std;
int z[1010][1010],vis[1010],dis[1010],n,m;
int dfs(int k)
{
    for(int i=1; i<=n; i++)
        if(z[k][i]&&!vis[i])//i点未标记,k于i可配对
        {
            vis[i]=1;//标记i点已访问过
            if(dis[i]==-1||dfs(dis[i]))//如果i点没有匹配点或找到新匹配点
            {
                dis[i]=k;//更新匹配关系
                dis[k]=i;//可删除sum/2
                return 1;
            }
        }
    return 0;
}
int main()
{
    while(~scanf("%d%d",&n,&m))//n个点m条边
    {
        memset(z,0,sizeof(z));
        memset(dis,-1,sizeof(dis));
        int a,b;
        for(int j=0; j

你可能感兴趣的:(存模板,图论)