Description

现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金。主持人问题准备了若干道题目,只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰。为了增加节目的趣味性并适当降低难度,主持人总提供给选手几个“锦囊妙计”,比如求助现场观众,或者去掉若干个错误答案(选择题)等等。 这里,我们把规则稍微改变一下。假设主持人总共有m道题,选手有n种不同的“锦囊妙计”。主持人规定,每道题都可以从两种“锦囊妙计”中选择一种,而每种“锦囊妙计”只能用一次。我们又假设一道题使用了它允许的锦囊妙计后,就一定能正确回答,顺利进入下一题。现在我来到了节目现场,可是我实在是太笨了,以至于一道题也不会做,每道题只好借助使用“锦囊妙计”来通过。如果我事先就知道了每道题能够使用哪两种“锦囊妙计”,那么你能告诉我怎样选择才能通过最多的题数吗?

Input

输入文件的一行是两个正整数 nn 和 mm (0<n<1001,0<m<1001)(0 表示总共有 nn 中“锦囊妙计”,编号为 00 ~ n−1n-1,总共有 mm 个问题。
以下的 mm 行,每行两个数,分别表示第 mm 个问题可以使用的“锦囊妙计”的编号。
注意,每种编号的“锦囊妙计”只能使用一次,同一个问题的两个“锦囊妙计”可能一样。

Output

第一行为最多能通过的题数pp

Sample Input

5 6
3 2
2 0
0 3
0 4
3 2
3 2

Sample Output

4

Solution

匈牙利裸题。

#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;#define N 300001
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define drp(i, a, b) for (int i = a; i >= b; i--)
#define fech(i, x) for (int i = 0; i < x.size(); i++)
#define ll long longinline int read() {int x = 0, flag = 1; char ch = getchar();while (ch > '9' || ch < '0') { if (ch == '-') flag = -1; ch = getchar(); }while (ch <= '9' && ch >= '0') { x = x * 10 + ch - '0'; ch = getchar(); }return x * flag;
}
inline void write(int x) { if (x >= 10) write(x / 10); putchar(x % 10 + '0'); }int n, m;
vector<int> g[N];
int result[N], state[N], tot;
bool gou(int u) {fech(i, g[u]) {int v = g[u][i];if (state[v] == tot) continue;state[v] = tot;if (!result[v] || gou(result[v])) {result[v] = u;return true;}}return false;
}int main() {cin >> n >> m; int ans = 0;rep(i, 1, m) {int x = read() + 1, y = read() + 1;g[i].push_back(x), g[i].push_back(y);tot++;if (gou(i)) ans++;else break;}write(ans);return 0;
}

bzoj1191 [HNOI2006]超级英雄Hero相关推荐

  1. BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5860  Solved: 2617 [Submit][Status][Discuss] Descri ...

  2. [bzoj1191][HNOI2006]超级英雄Hero

    题意:有n个锦囊妙计,m道题.先从第1道题做起,每道题都有两个妙计可以解决,解决之后才能进入下一题,每个妙计只能用一次,求最多能解决多少题 题解:二分答案+网络流check #include<c ...

  3. bzoj1191[HNOI2006] 超级英雄Hero

    题目链接:bzoj1191 题目大意: 总共有m道题,选手有n种不同的"锦囊妙计".主持人规定,每道题都可以从两种"锦囊妙计"中选择一种,而每种"锦囊 ...

  4. bzoj1191: [HNOI2006]超级英雄Hero

    裸匈牙利.我已经15题1A了(捂脸) #include<cstdio> #include<iostream> #include<cstring> #include& ...

  5. bzoj1191[HNOI2006]超级英雄Hero

    裸的二分图匹配,毕竟是t1,但是主要是有一句题目一旦没办法匹配了就要break,没看到闯关制的我调了好久 #include<iostream> #include<cstdio> ...

  6. bzoj 1191: [HNOI2006]超级英雄Hero

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4590  Solved: 2106 [Submit ...

  7. BZOJ 1191: [HNOI2006]超级英雄Hero 二分图匹配

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4430  Solved: 2036 [Submit ...

  8. 【bzoj1191】 HNOI2006—超级英雄Hero

    http://www.lydsy.com/JudgeOnline/problem.php?id=1191 (题目链接) 题意:有m个问题,n个锦囊妙计,每个锦囊妙计可以解决一个问题,每个问题有两个锦囊 ...

  9. bzoj 1191 [HNOI2006]超级英雄Hero

    Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确 ...

最新文章

  1. python组成不重复的三位数是多少_Python输出由1,2,3,4组成的互不相同且无重复的三位数...
  2. 赠票 | 2019,GMIS归来!杨强、吴恩达等全球重磅嘉宾共话数据智能(上海)
  3. 异常-java.util.concurrent.TimeoutException: Futures timed out after [100000 milliseconds]
  4. 《Excel 职场手册:260招菜鸟变达人》一第 20 招 怎样在单元格文字前加空白
  5. MFC里的GDI CDC HDC到底是什么?
  6. Python-100例(7-8) 复制列表 打印乘法口诀
  7. yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...
  8. Django中的路由分发
  9. 旋转卡壳 背诵用模板
  10. python 函数嵌套 报错_《Python》 函数嵌套、闭包和迭代器
  11. matlab报错找不到icuuc54.dll解决办法:
  12. 清华同方服务器硬盘更换,清华同方bios设置硬盘教程
  13. 华为RH2288 V3安装 linux 龙蜥anolis系统安装
  14. python re正则模块详解
  15. [ Java面试题 ]Java 开发岗面试知识点解析
  16. 东方快车谋杀案 - 笔记
  17. 通过docker部署zigbee2mqtt后出现web界面无法访问
  18. linux apk 打包工具,linux下apk批量打包
  19. immutable.js中文文档
  20. STM32F03C8T6 MPU6050 标准库

热门文章

  1. 都挺好!当老年人遇上互联网......
  2. 报复性汉语四六级考试
  3. Java通过出生日期计算星座、(生肖)
  4. Get技能 | 嵌入式软件测试的10条秘诀
  5. 计算机网络-网络层(路由协议,自治系统,域内路由与域间路由(IGP,EGP)RIP协议与距离向量算法,OSPF协议与链路状态算法)
  6. N型连接器市场现状及未来发展趋势分析
  7. 新媒体运营教程:运营体系及数据分析!
  8. 18载艰苦创业,曾动念房地产转型,讯飞的江湖夜雨和桃李春风
  9. 华硕笔记本没电后进入BIOS
  10. 计算机 英语折算学分规定,泰州学院奖励学分制度实施细则