二分图构图的特点是:先根据题意确定考察点,然后再判断构造的图模型是否是二分图,或者能否转换为二分图,然后根据划分关系是否明确来定性边有无方向。最后,用二分图匹配算法解决之。

 

1: HDU 过山车

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

分析:直观的二分图题,以男女为二分图的两部分建图即可;

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 #define N 505
 5 int k, n, m;
 6 bool partner[N][N], used[N];
 7 int match[N];
 8 
 9 bool find(int x)
10 {
11     for (int i=1; i<=n; i++)
12     {
13         if (!used[i] && partner[x][i])
14         {
15             used[i] = true;
16             if (match[i]==-1 || find(match[i]))
17             {
18                 match[i] = x;
19                 return true;
20             }
21         }
22     }
23     return false;
24 }
25 
26 void Hungary ()
27 {
28     int cnt=0;
29     memset (match, -1, sizeof match);
30     for (int i=1; i<=m; i++)
31     {
32         memset (used, 0, sizeof used);
33         if (find(i))
34             cnt++;
35     }
36     printf ("%d\n",cnt);
37 }
38 int main ()
39 {
40     while (~scanf ("%d",&k) && k)
41     {
42         int a, b;
43         scanf ("%d%d",&m, &n);
44         memset (partner, 0, sizeof partner);
45         while (k--)
46         {
47             scanf("%d%d",&a, &b);
48             partner[a][b] = 1;
49         }
50         Hungary();
51     }
52     return 0;
53 }
View Code

相关文章:

  • 2021-08-10
  • 2021-12-17
  • 2022-12-23
  • 2022-12-23
  • 2021-11-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-17
  • 2021-11-11
  • 2021-12-27
  • 2021-09-29
  • 2022-12-23
  • 2022-01-20
相关资源
相似解决方案