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


     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 }
  • 相关阅读:
    document cookie用法
    禁用表单元素 && 禁止选中
    tool
    居中对齐
    插件
    浮动应用
    兼容低版本 ie 的思路
    Linux无权限上传文件解决办法
    linux系统常用运维命令
    linux系统快捷键
  • 原文地址:https://www.cnblogs.com/iiyiyi/p/5269835.html
Copyright © 2020-2023  润新知