题解:

二分图最大匹配,模板题

注意:当不能匹配的时候直接输出

注意:当不能匹配的时候直接输出

注意:当不能匹配的时候直接输出

 重要的事情说三遍

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int match[N],f[N],n,m,x,y,a[N][N];
int dfs(int x)
{
    for (int i=0;i<n;i++)
     if (!f[i]&&a[x][i])
      {
         f[i]=1;
         if (!match[i]||(dfs(match[i])))
          {
              match[i]=x;
              return 1;
          }
      }
    return 0;  
}
int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++)
     {
         scanf("%d%d",&x,&y);
         a[i][x]=a[i][y]=1;
     }
    int ans=0; 
    for (int i=1;i<=m;i++)
     {
         memset(f,0,sizeof f);
         if (!dfs(i))
          {
              printf("%d",i-1);
              return 0;
          }
     }
    printf("%d",m); 
}

 

posted on 2017-10-07 16:43  宣毅鸣  阅读(114)  评论(0编辑  收藏  举报