POJ3041最大匹配匈牙利算法

来源:互联网 发布:商丘市蓝海网络 编辑:程序博客网 时间:2024/04/29 20:46
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[501][501],match[501],m,n,p[501];int dfs(int x){    int i,j,k;    for(i=1;i<=n;i++)        if(a[x][i] && !p[i]){            p[i]=1;            if(!match[i] || dfs(match[i])){                match[i]=x;                return 1;                     }        }    return 0;    }int main(){    int i,j,k;        cin>>n>>m;    int x,y;    for(i=1;i<=m;i++){        scanf("%d%d",&x,&y);                         a[x][y]=1;                          }    int ans=0;    for(i=1;i<=n;i++){        for(j=1;j<=n;j++)  p[j]=0;                          if(dfs(i)==1)ans++;                  }    cout<<ans<<endl;    return 0;    }

0 0