二分图最大匹配(匈牙利算法Dfs模板)
Posted 一入OI深似海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分图最大匹配(匈牙利算法Dfs模板)相关的知识,希望对你有一定的参考价值。
#include<iostream> #include<cstdio> #include<cstring> #define maxn 2020 using namespace std; int n,m,g[maxn][maxn],ans,f[maxn],match[maxn]; int init() { int x=0;char s;s=getchar(); while(s<‘0‘||s>‘9‘)s=getchar(); while(s>=‘0‘&&s<=‘9‘){x=x*10+s-‘0‘;s=getchar();} return x; } int Dfs(int s) { for(int i=1;i<=n;i++) if(g[s][i]&&f[i]==0) { f[i]=1; if(match[i]==0||Dfs(match[i])) { match[i]=s; return 1; } } return 0; } int main() { n=init();m=init(); int x,y; for(int i=1;i<=m;i++) { x=init();y=init(); g[x][y]=1; } for(int i=1;i<=n;i++) { memset(f,0,sizeof(f)); ans+=Dfs(i); } printf("%d\n",n-ans); return 0; }
以上是关于二分图最大匹配(匈牙利算法Dfs模板)的主要内容,如果未能解决你的问题,请参考以下文章