码迷,mamicode.com
首页 > 编程语言 > 详细

【匈牙利算法模板】BZOJ1191-超级英雄

时间:2016-03-12 19:58:42      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=1001+100;
 7 int p[MAXN][MAXN];
 8 int vis[MAXN],lk[MAXN];
 9 int n,m;
10 
11 void init()
12 {
13     scanf("%d%d",&n,&m);
14     for (int i=1;i<=m;i++)
15     {
16         int u,v;
17         scanf("%d%d",&u,&v);
18         p[i][u]=p[i][v]=1;
19     }
20 }
21 
22 int find(int u)
23 {
24     for (int i=0;i<n;i++)
25     {
26         if (!vis[i] && p[u][i])
27         {
28             vis[i]=1;
29             if (!lk[i] || find(lk[i]))
30             {
31                 lk[i]=u;
32                 return 1;
33             }
34         }
35     }
36     return 0;
37 }
38 
39 void Hungary()
40 {
41     memset(lk,0,sizeof(lk));
42     int ans=0;
43     for (int i=1;i<=m;i++)
44     {
45         memset(vis,0,sizeof(vis));
46         if (find(i)) ans++;else break;
47         /*我一开始写成了if (!find(i)) 那么输出i-1并且break..后来发现这样的话如果全部题都能够答,就没有输出了*/
48     } 
49     cout<<ans<<endl;
50 }
51 
52 int main()
53 {
54     init();
55     Hungary();
56     return 0;
57 }

 

【匈牙利算法模板】BZOJ1191-超级英雄

标签:

原文地址:http://www.cnblogs.com/iiyiyi/p/5269835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!