标签:最大匹配 接下来 二分图最大匹配 blank 情况 inpu col problem out
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1143
Description:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int N = 205 ; int Map[N][N],check[N*2],match[N*2],Link[N][N*2]; int n,m,ans; inline int dfs(int x){ for(int i=n+1;i<=2*n;i++){ if(Link[x][i] && !check[i]){ check[i]=1; if(!match[i] || dfs(match[i])){ match[i]=x; return 1; } } } return 0; } int main(){ scanf("%d%d",&n,&m); ans=0; for(int i=1,x,y;i<=m;i++){ scanf("%d%d",&x,&y); Map[x][y]=1; } for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ if(Map[i][k]) for(int j=1;j<=n;j++){ if(Map[k][j]) Map[i][j]=1; } } } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(Map[i][j]) Link[i][j+n]=1; for(int i=1;i<=n;i++){ memset(check,0,sizeof(check)); if(dfs(i)) ans++; } printf("%d\n",n-ans); return 0; }
标签:最大匹配 接下来 二分图最大匹配 blank 情况 inpu col problem out
原文地址:https://www.cnblogs.com/heyuhhh/p/10398529.html