- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #define MAX 1005
- using namespace std;
- int mmap[MAX][MAX];
- int link[MAX];
- int vis[MAX];
- int n,m;
- bool dfs(int l)
- {
- for(int r=0;r<m;r++)
- {
- if(mmap[l][r]&&!vis[r])
- {
- vis[r]=1;
- if(link[r]==-1||dfs(link[r]))
- {
- link[r]=l;
- return true;
- }
- }
- }
- return false;
- }
- int main()
- {
- while(cin>>n>>m)
- {
- int ans=0;
- memset(link,-1,sizeof(link));
- for(int i=0;i<n;i++)
- for(int j=0;j<m;j++)
- cin>>mmap[i][j];
- for(int i=0;i<n;i++)
- {
- memset(vis,0,sizeof(vis));
- if(dfs(i))
- ans++;
- }
- cout<<ans<<endl;
- }
- }
二分匹配模板()
最新推荐文章于 2024-06-23 23:45:35 发布