hdu 2063 过山车 基础最大二分匹配

http://acm.hdu.edu.cn/showproblem.php?pid=2063

 

忘了每次清空那几个DT的数组导致wa。。。低级错误。。。囧

 

#include<stdio.h> #include<string> #define MAX 510 bool path[MAX][MAX],visit[MAX]; int match[MAX]; bool searchpath(int s,int m) { for(int i=1;i<=m;i++) { if(path[s][i] && !visit[i]) { visit[i]=true; if(match[i]==0 || searchpath(match[i],m)) //查找可增广路并更新match数组 { match[i]=s; //printf("!!!match[%d]----%d/n",i,s); return true; } } } return false; } int main() { //freopen("a.txt","r",stdin); int n,m,sum,k; while(scanf("%d",&k)) { if(!k)break; scanf("%d%d",&n,&m); memset(match,0,sizeof(match)); memset(path,0,sizeof(path)); int i,j; for(i=0;i<k;i++) { int a,b; scanf("%d%d",&a,&b); path[a][b]=true; } sum=0; for(i=1;i<=n;i++) { memset(visit,0,sizeof(visit)); if(searchpath(i,m)) sum++; } printf("%d/n",sum); } return 0; }

 

你可能感兴趣的:(hdu 2063 过山车 基础最大二分匹配)