[Loj] #6000. 「网络流 24 题」搭配飞行员

xiaoxiao2021-02-27  251

二分图最大匹配值,直接裸上匈牙利。

#include <cstdio> #include <cstring> using namespace std; const int N=105; int n,m; int a,b; int ans; bool vis[N]; int fr[N]; int ga[N][N]; bool find(int x) { register int i; for (i=m+1;i<=n;i++) { if (ga[x][i]&&!vis[i]) { vis[i]=1; if (!fr[i]||find(fr[i])) {fr[i]=x;return 1;} } } return 0; } int main() { register int i; scanf("%d %d ",&n,&m); while (~scanf("%d %d",&a,&b)) ga[a][b]=1; for (i=1;i<=m;i++) { memset(vis,0,sizeof(vis)); if (find(i)) ans++; } printf("%d",ans); }

转载请注明原文地址: https://www.6miu.com/read-9028.html

最新回复(0)