• 【模板/学习】匈牙利算法


    P3386 【模板】二分图匹配

    有段时间老是搜匈牙利算法, 百度给我推荐匈牙利旅游匈牙利移民可还行

    一直也没有打过, 所以对匈牙利算法的认识一直停留在社会主义分老婆上

    直接帖板子啦qwq随手一搜匈牙利算法讲解都很好一定要有图的那种, 一般左边是汉子右边是妹子最后一个是凤姐

    代码是和《进阶指南》上学的, 但我用的邻接表存图qwq

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 const int sz = 1010;
     6 int num = 0, n, m, edg, ans = 0;
     7 int head[sz], match[sz];
     8 bool vis[sz];
     9 struct edge {
    10     int nxt, to;
    11 }e[sz << 1];
    12 void add(int from, int to) {
    13     e[++num].nxt = head[from];
    14     e[num].to = to;
    15     head[from] = num;
    16 }
    17 bool dfs(int x) {
    18     for(int i = head[x]; i; i = e[i].nxt) {
    19         int y = e[i].to;
    20         if(!vis[y]) {
    21             vis[y] = 1;
    22             if(!match[y] || dfs(match[y])) {
    23                 match[y] = x;
    24                 return true;
    25             }
    26         }
    27     }
    28     return false;
    29 }
    30 int main() {
    31     scanf("%d%d%d", &n, &m, &edg);
    32     for(int i = 1; i <= edg; i++) {
    33         int u, v;
    34         scanf("%d%d", &u, &v);
    35         if(v > m) continue;
    36         add(u, v);
    37     }
    38     for(int i = 1; i <= n; i++) {
    39         memset(vis, 0, sizeof(vis));
    40         if(dfs(i)) ans++;
    41     }
    42     printf("%d", ans);
    43     return 0;
    44 }
  • 相关阅读:
    mini linux制作
    samba
    文件链接
    bz1234513
    shell中if判断语句
    文件系统层次结构
    ssh免密码登陆
    shell基础
    参考__Web前端大全
    参考__综合类网站大全
  • 原文地址:https://www.cnblogs.com/Hwjia/p/9898099.html
Copyright © 2020-2023  润新知