【图论】二分图最大匹配(模板+定义定理)

来源:互联网 发布:网络虚拟货币有哪些 编辑:程序博客网 时间:2024/06/14 14:54
            模板

dfs:

bool dfs(int k){    for(int i=1;i<=n;i++){        if(!v[i] && map[k][i]){            v[i]=1;            if(link[i]=-1 || dfs(i)){                link[i]=k;                return 1;            }        }    }    return 0;}

主函数:

int main(){    write something//输入变量n,并连边    memset(link,-1,sizeof(link));    for(int i=1;i<=n;i++){        memset(v,0,sizeof(v));        num+=dfs(i);    }    printf("%d",num);}   
          定义与定理

最大匹配数:最大匹配的匹配边的数目

最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择

最大独立数:选取最多的点,使任意所选两点均不相连

最小路径覆盖数:对于一个 DAG(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长可以为 0(即单个点)。

  • 最大匹配数 = 最小点覆盖数(这是 Konig 定理)

  • 最大匹配数 = 最大独立数

  • 最小路径覆盖数 = 顶点数 - 最大匹配数

原创粉丝点击