bzoj1191 [ HNOI2006 ] --匈牙利算法

来源:互联网 发布:php开发ide排行榜 编辑:程序博客网 时间:2024/05/22 01:41
这道题一看就是求二分图最大匹配,不过需要注意的是答案需要前面所有题目都能答对,因为这里WA了无数次......
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int tot,a[3001][2],i,j,n,m,k,f[3001],x,y;bool b[3001],flag=0;bool dfs(int x){    b[x]=1;    if(!f[a[x][0]]){        f[a[x][0]]=x;        return 1;    }    if(!b[f[a[x][0]]]&&dfs(f[a[x][0]])){        f[a[x][0]]=x;        return 1;    }    if(!f[a[x][1]]){        f[a[x][1]]=x;        return 1;    }    if(!b[f[a[x][1]]]&&dfs(f[a[x][1]])){        f[a[x][1]]=x;        return 1;    }    return 0;}int main(){    scanf("%d%d",&m,&n);    for(i=1;i<=n;++i)scanf("%d%d",&a[i][0],&a[i][1]);    for(i=1;i<=n;++i){        memset(b,0,sizeof(b));        if(!dfs(i)){            flag=1;            break;        }    }    printf("%d\n",!flag?n:(i-1));    return 0;}

 

原创粉丝点击