贴贴更健康-____________________________-
- #define N 500
- bool map[N][N],visit[N];
- int n,m,match[N];
- bool dfs(int pre)
- {
- for(int i=0;i<m;i++)
- {
- if(map[pre][i]&&!visit[i])
- {
- visit[i]=true;
- int t=match[i];
- match[i]=pre;
- if(t==-1||dfs(t)) return true;
- match[i]=t;
- }
- }
- return false;
- }
- int find_match()
- {
- memset(match,-1,sizeof(match));
- int i,sum=0;
- for(i=0;i<n;i++){memset(visit,false,sizeof(visit));if(dfs(i)) sum++;}
- return sum;
- }