#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int n,m;
vector<int> v[110];
int link[110];
bool use[110];//,dfsT;
bool dfs(int u)
{
int size = v[u].size();
for(int i=0;i<size;i++)
{
int to = v[u][i];
// if(use[to]!=dfsT)
if(!use[to])
{
use[to]=1;
if(!~link[to]||dfs(link[to]))
{
link[to]=u;
return true;
}
}
}
return false;
}
inline int match()
{
memset(link,-1,sizeof(link));
int ans = 0;
for(int i=1;i<=n;i++)
{
memset(use,0,sizeof(use));
// ++dfsT;
if(dfs(i))ans++;
}
return ans;
}
int main(void)
{
while(scanf("%d%d",&n,&m)==2)
{
int t;
for(int i=1;i<=n;i++)v[i].clear();
HDU2119 Matrix 【最小点覆盖】
最新推荐文章于 2020-11-20 20:49:48 发布