首页 > 代码库 > hdu2063 过山车 二分图最大匹配

hdu2063 过山车 二分图最大匹配

男女进行二分图匹配,裸题

技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 int now,head[1001],next[1001],point[1001],visit[1001],match[1001];
 4 
 5 void add(int x,int y){
 6     next[++now]=head[x];
 7     head[x]=now;
 8     point[now]=y;
 9 }
10 
11 int dfs(int k)
12 {
13     for(int i=head[k];i;i=next[i]) if(!visit[point[i]]){
14         int p=point[i];
15         visit[p]=1;
16         if(match[p]==-1||dfs(match[p])){
17             match[p]=k;
18             return 1;
19         }
20     }
21     return 0;
22 }
23 
24 int main(){
25     int K,M,N;
26     while(scanf("%d",&K)!=EOF&&K!=0){
27         scanf("%d%d",&M,&N);
28         memset(match,-1,sizeof(match));
29         memset(head,0,sizeof(head));
30         now=0;
31         int i,ans=0;
32         for(i=1;i<=K;i++){
33             int a,b;
34             scanf("%d%d",&a,&b);
35             add(a,b);
36         }
37         for(i=1;i<=M;i++){
38             memset(visit,0,sizeof(visit));
39             if(dfs(i)==1)ans++;
40         }
41         printf("%d\n",ans);
42     }
43     return 0;
44 }
View Code

 

hdu2063 过山车 二分图最大匹配