poj1274

题意: 有n个奶牛, m个畜舍, 每个畜舍最多装1头牛,每只奶牛只有在自己喜欢的畜舍里才能产奶。 求最大产奶量。

分析: 其实题意很明显, 二分图的最大匹配, 匈牙利算法。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<cstring>
using namespace std;int n, m, sum, v[210], ans[210], map1[210][210];
int dfs(int x)//如果有增广路径返回1, 否则返回0
{for(int i = 1; i <= m; i++){if(map1[x][i] == 1 && v[i] == 0)//有x-i边(牛x喜欢牛舍i) i没搜索过
        {v[i] = 1;//i是非匹配点,找到增广路径, 或者i是匹配点,从i继续往下找存在增广路径if(ans[i] == 0 || (ans[i] != 0 && dfs(ans[i]) == 1)){ans[i] = x;//记录牛舍i对应存放奶牛xreturn 1;}}}return 0;
}
int main()
{while(scanf("%d%d", &n, &m) != EOF){memset(map1, 0, sizeof(map1));memset(ans, 0, sizeof(ans));int s, t;for(int i = 1; i <= n; i++){scanf("%d", &s);for(int j = 1; j <= s; j++){scanf("%d", &t);map1[i][t] = 1;}}sum = 0;for(int i = 1; i <= n; i++){//v标记是否是搜索过, 每一次查询都从新初始化所有v为0(为搜索过)memset(v, 0, sizeof(v));int t = dfs(i);if(t == 1)sum++;}printf("%d\n", sum);}return 0;
}

View Code

转载于:https://www.cnblogs.com/wd-one/p/4534555.html

poj1274 匈牙利算法 二分图最大匹配相关推荐

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

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

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

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

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

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

  4. hdu 4160 Dolls 匈牙利算法求最大匹配

    Dolls                                                                               Time Limit: 2000 ...

  5. nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)

    题目239 题目信息 运行结果 本题排行 讨论区 月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. ...

  6. 【HDU - 2444】The Accomodation of Students(二分图判断 + 匈牙利算法求最大匹配)

    题干: There are a group of students. Some of them may know each other, while others don't. For example ...

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

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

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

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

  9. 二分图最大匹配——匈牙利算法

    二分图最大匹配 (一).二分图的介绍 1.定义 2.充要条件 (二).二分图的匹配 1.二分图的最大匹配 2.增广路径 3.匈牙利算法 (1).复杂度 (2).算法思路 (3).代码实现 (一).二分 ...

  10. 二分图匹配--匈牙利算法

    文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...

最新文章

  1. wsl for pycharm vscode
  2. VTK:vtkAffineWidget用法实战
  3. 选择指定的MySQL数据库
  4. 【解题报告】Leecode 643. 子数组最大平均数 I——Leecode 刷题系列
  5. Golang的CSP很酷?其实.NET也可以轻松完成
  6. 十个习惯让你精通新的开发技术
  7. linux_bash_shell_cheat_sheet(自译)
  8. Android自定义UI实例
  9. mysql对应systables_mysql5.7中的sys表详解(转)
  10. profile和bashrc
  11. linux学习(3)——vim文本编辑工具
  12. jdk8官网下载地址
  13. 软考论文写作的时间分配
  14. multisim C语言编程,基于Multisim10的51单片机仿真实战教程:使用汇编和C语言
  15. java blockingqueue_Java BlockingQueue take()用法及代码示例
  16. 单像后方交会、pnp问题迭代计算的数学原理
  17. ntfs格式分区是什么意思
  18. 怎样无损压缩视频?试试这个视频压缩大小的工具
  19. 博客内容导航——你想要的我都有!
  20. 手机端微信突然弹出电脑端已登录,是什么原因?

热门文章

  1. html______1
  2. 一个伤心人的帖和一群搞笑人的跟帖
  3. Sound Grinder Pro for Mac(音频批量编辑转换工具)
  4. Mac电脑「空格键」的妙用,原来有这么多功能
  5. Linux欢迎文字配置(命令行模式)
  6. 网站robots协议介绍及文件写法举例
  7. [数据结构]二叉搜索树概念及基本操作
  8. python 学习笔记 while语句(11)
  9. Atlas学习手记(21):使用行为增强用户界面(一):Click Behavior
  10. 「代码随想录」279.完全平方数 【动态规划】力扣详解!