洛谷P3386

我还是比较喜欢叫它——谈恋爱算法。。。详见    二分图匹配详解

注意:判断的条件是:if(f[x][i]==1&&used[i]==0)

   其他没什么了,如果每次用memset会超时,可以使用二维数组记录

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 inline int sc()
 4 {    int x=0,f=1;char ch=getchar();
 5     while(!isdigit(ch)){    if(ch==45)f=-1;ch=getchar();}
 6     while(isdigit(ch)) {    x=x*10+ch-48;ch=getchar();}
 7     return x*f;
 8     }
 9 int f[1010][1010],lk[1010],n,m,e;
10 bool vis[1010];
11 bool find(int x)
12 {    for(int i=1;i<=m;i++)
13     {    if(f[x][i]==1&&vis[i]==0)
14         {    vis[i]=1;
15             if(lk[i]==0||find(lk[i]))
16                  return lk[i]=x,1;
17              }
18         }
19     return false;
20     }
21 int main()
22 {    n=sc();m=sc();e=sc();
23     for(int i=1;i<=e;i++)
24     {    int u=sc(),v=sc();
25         if(u>n||v>m)continue;
26         f[u][v]=1;
27         }
28     int cnt=0;
29     for(int i=1;i<=n;i++)
30     {    memset(vis,0,sizeof(vis));
31         if(find(i)) cnt++;
32         }
33     cout<<cnt<<endl;
34     return 0;
35     } 

转载于:https://www.cnblogs.com/Slager-Z/p/7784502.html

[模板]匈牙利算法(二分图匹配)相关推荐

  1. 【HDU - 5943】Kingdom of Obsession(数论,素数间隔结论,构造,思维,匈牙利算法,匹配问题)

    题干: There is a kindom of obsession, so people in this kingdom do things very strictly. They name the ...

  2. 【模板】匈牙利算法 二分图最大匹配题模板

    [任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...

  3. 浅谈匈牙利算法(二分图最大匹配)

    前置知识 一张图是二分图,当且仅当它的点可以被分成两部分,而这张图上的所有边的两个端点,都分属不同的部分.我们称这两个点集,一个叫左部,一个叫右部.左部中的点叫左部点:右部中的点叫右部点. 一张图的一 ...

  4. NOI图论算法:二分图匹配

    二分图匹配 算法竞赛入门经典训练指南+陈锋+ch5.5_二分图的匹配 https://www.bilibili.com/video/BV1j5411x7PU SWPU-ACM每周算法讲堂-匈牙利算法 ...

  5. POJ-3041 匈牙利算法 二分图最大匹配

    踢以 给出多个点的坐标 有一种攻击 可以把一次干掉同一列的 或者干掉同一行的 求最少的攻击次数 肥西 由于问题是问选取最少的行和列干掉所有的陨石 可以把输入的r和c看成r和c之间有一条连边因为要实现干 ...

  6. 【Step1】【二分图匹配】poj 1274-The Perfect Stall

    题目链接 题目大意 输入数据中,第一行给出n,表示n个奶牛. 接下来n行,每行一个x,xi表示第i头奶牛可以选择x个谷仓中的一个进行匹配.接下来x个数,表示谷仓的编号(1~n之间) 一个谷仓也只能有一 ...

  7. 匈牙利算法解决二分图匹配问题

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出.匈牙利算法是基于Hall定理中充分性证明的思想,它是二分图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的 ...

  8. 二分图匹配Hopcroft-Carp算法介绍

    我们在做二分图匹配的时候,最喜欢选择的就是匈牙利算法,但是我们可以知道匈牙利算法的复杂度是O(n*e),那么如果对于一个点和边比较多的图,匈牙利算法很容易超时,所以我们采用Hopcroft-Carp算 ...

  9. 染色法判定二分图 匈牙利算法

    染色法判定二分图 思路:相邻的点染不同颜色 看能不能染完 如果过程中出现相邻点相同颜色,就不可以 注意:需要遍历n个点 看此点是否被染色过 如果没有就进行一次dfs或bfs 二分图:可以把点分成两个集 ...

  10. 多目标跟踪之匈牙利算法

    0 前言 目标跟踪(Object Tracking)是自动驾驶中非常常见的任务,根据跟踪目标数量的不同,目标跟踪可分为: 单目标跟踪(Single Object Tracking,SOT) 多目标跟踪 ...

最新文章

  1. C/C++中extern关键字详解
  2. 博客中最快捷的公式显示方式:Mathjax + Lyx
  3. 史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce
  4. mysql5.7+ 虚拟列,json使用初体验
  5. php数组为什么其他语言,PHP语言特性和各版本的差异
  6. NTU -SCSE-orientation
  7. 监控程序崩溃重启_第十四章 Homeassistant服务器安全及状态监控(下)
  8. Kafka分区分配计算(分区器Partitions)
  9. 计算机信息技术为教育带来的变化,信息技术对课堂教学带来的变化
  10. 【Linux】Linux查看机器负载-CPU负载 CPU使用率达到100%
  11. LA 4123 (计数 递推) Glenbow Museum
  12. Log4j日志使用记录
  13. 算法-满足条件的数字放在新数组
  14. mysql表添加字段_怎么给mysql数据表添加字段
  15. 【bzoj 3252】攻略
  16. linux中安装typecho的pathinfo配置
  17. 泰山OFFICE在LINUX上输入法候选框位置错误的两个解决思路
  18. Matlab学习第一部分:基础知识
  19. 如何用VsCode进行Debug
  20. 爬虫篇——采集单机游戏(网页游戏),爬取小游戏

热门文章

  1. php如何防止网站被攻击,防止网站被攻击的办法
  2. 使用springboot自带 MD5加密
  3. Linux中的重定向
  4. C++中在使用自定义类型(结构体类型)的stl数据结构时,operate的用法
  5. pve 虚拟环境 vi/vim不能右键粘贴设置方法
  6. mac 系统下 刻录centos 系统到 U盘中
  7. Spring Boot 2.1.3 整合 H2Datase 嵌入式数据库
  8. Solr 4.10.3 导入 Mysql 数据
  9. oracle中使用java存贮过程
  10. iptables与Netfilter概念