• HDU 2063 过山车 (最大匹配,匈牙利算法)


    题意:中文题目

    思路:匈牙利算法解决二分图最大匹配问题。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N=505;
     4 int mapp[N][N]; //矩阵
     5 int girl[N];    //记录该女已分配的男编号
     6 int vis[N];     //标记是否已经尝试为其另分配
     7 int n, a, b, k, m;
     8 
     9 int find(int x)
    10 {
    11     for(int i=1; i<=m; i++) //扫描所有妹子
    12     {
    13         if(mapp[x][i]&&!vis[i])  //有暧昧,未尝试为其另分配
    14         {
    15             vis[i]=1;   //已尝试
    16             if( !girl[i] || find(girl[i]) )
    17             {
    18                 girl[i]=x;
    19                 return true;
    20             }
    21         }
    22     }
    23     return false;
    24 }
    25 
    26 int hungary()
    27 {
    28     int cnt=0;
    29     for(int i=1; i<=n; i++)
    30     {
    31         memset(vis,0,sizeof(vis));
    32         if(find(i))    cnt++;
    33     }
    34     return cnt;
    35 }
    36 
    37 int main()
    38 {
    39     freopen("input.txt", "r", stdin);
    40 
    41     while(scanf("%d",&k), k)
    42     {
    43         memset(vis,0,sizeof(vis));
    44         memset(mapp,0,sizeof(mapp));
    45         memset(girl,0,sizeof(girl));
    46         scanf("%d%d",&m,&n);
    47 
    48         for(int i=0; i<k; i++)  //2分图
    49         {
    50             scanf("%d%d",&b,&a);
    51             mapp[a][b]=1;
    52         }
    53         printf("%d
    ",hungary());
    54     }
    55     return 0;
    56 }
    AC代码
  • 相关阅读:
    Spring AOP
    Spring Bean的生命周期
    MySQL中的SQL的常见优化策略
    垃圾收集器
    JWT
    Zookeeper
    RabbitMQ原理介绍
    kafka 安装配置
    kafka 简介
    ELK logstash 各种报错
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4611444.html
Copyright © 2020-2023  润新知