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

Description

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

Input

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

Output

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

Sample Input

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

Sample Output

4

HINT

Source

很zz的一道二分图匹配

对于$m$个问题,向他能选的两个连边

跑匈牙利

如果不能匹配的话直接退出!!

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define LL long long
using namespace std;
const int MAXN = 1e3 + 10, INF = 1e9 + 10;
inline int read() {char c = getchar(); int x = 0, f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * f;
}
int N, M;
vector<int> v[MAXN];
int link[MAXN], vis[MAXN], cnt = 1, Ans[MAXN];
bool Aug(int x) {for(int i = 0; i < v[x].size(); i++) {int to = v[x][i];if(vis[to] == cnt) continue;vis[to] = cnt;if(link[to] == -1 || Aug(link[to])) {link[to] = x; return 1;}}return 0;
}
main() {
#ifdef WIN32freopen("1191.in", "r", stdin);freopen("1191.out", "w", stdout);
#endifmemset(link, -1, sizeof(link));memset(Ans, -1, sizeof(Ans));N = read(); M = read();for(int i = 0; i < M; i++) {int x = read(), y = read();v[i].push_back(x);if(x != y) v[i].push_back(y);}int ans = 0;for(int i = 0; i < M; i++, cnt++)if(Aug(i)) ans++;else break; for(int i = 0; i < N; i++)Ans[link[i]] = i;printf("%d\n", ans);/*for(int i = 0; i < N; i++)if(Ans[i] != -1)printf("%d\n", Ans[i]);*/return 0;
}   

转载于:https://www.cnblogs.com/zwfymqz/p/9285468.html

BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)相关推荐

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

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

  2. B1192 [HNOI2006]超级英雄Hero 二分图匹配

    先检讨一下,前一段时间开学,做题懒得发博客,也不总结...现在捡起来. 这个题一看是裸的二分图匹配,但是仔细一看还有一些区别,就是必须要连续的连接,否则直接退出.因为前一道题答不出来的话后面的题就没有 ...

  3. bzoj1191[HNOI2006]超级英雄Hero

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

  4. bzoj1191[HNOI2006] 超级英雄Hero

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

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

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

  6. bzoj1191 [HNOI2006]超级英雄Hero

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

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

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

  8. bzoj #1191 超级英雄(二分图匹配)

    引言 据dm说这道题比较简单? 原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191​ 标签:二分图匹配 题意描述 [HNOI2006]超 ...

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

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

最新文章

  1. match_parent和fill_parent的区别
  2. Java学习笔记3——继承
  3. 今天的新坑 ubuntu18.04安装docker
  4. supmap java_SuperMap iServerJava安装与出图必读之Windows操作系统篇
  5. 卸载shockwave flash插件
  6. beanutils工具类_Apache Commons 工具类介绍及简单使用
  7. 科大星云诗社动态20210818
  8. C++ cin cout
  9. 这些让人看瞎了的设计!实力证明,数学才是世界的最终boss!
  10. Daily scrum[2013.12.02]
  11. eCognition易康domain is empty原因
  12. Android 存储学习之使用SharedPreference保存文件
  13. C/C++[codeup 1934,1932,1935]查找
  14. 计算机视觉教程0-4:手推张正友标定法,详解图像去畸变(附代码)
  15. 瑞星企业防毒2010网络版(二)管理及应用
  16. Semaphore释疑
  17. 良心到难以置信的网站推荐第7期丨全程干货
  18. 短视频代运营服务内容
  19. 【Win10系统自带软件】文件系统错误(-2147219196)解决方法
  20. oracle教程课件,Oracle入门教程(PPT课件)

热门文章

  1. 【Java深入研究】10、红黑树
  2. Java面试基础知识(1)
  3. 05 HTML字符串转换成jQuery对象、绑定数据到元素上
  4. Android AudioTrack/AudioRecord -wav文件读取3
  5. Flex调用WebService后的数据处理
  6. OpenCV circle图像上画圆
  7. Linux shell的标准输入、输出和错误
  8. java模拟网易邮箱登录_求赐教:网易邮箱Web端模拟登录看信的加密参数_ntes_nnid、_ntes_nuid...
  9. java记录登陆时间_Spring security如何实现记录用户登录时间功能
  10. Spring MVC 登录拦截器