bzoj #1191 超级英雄(二分图匹配)
引言
据dm说这道题比较简单?
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191
标签:二分图匹配
题意描述
[HNOI2006]超级英雄Hero
Time Limit: 10 Sec Memory Limit: 162 MB
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
分析
这道题是一道比较裸的二分图匹配的题,对于二分图匹配可以用最大流(Maximal Flow)或者匈牙利算法(Hungarian Algorithm),本题选用了比较简(zhi)单(zhang)的匈牙利算法。匈牙利算法的核心是寻找增广路径(其实就是跑dfs),然后一个一个点往下搜。。。
代码
#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 1050
using namespace std;
int n,m,f[maxn][maxn],l[maxn],x,y,i,ans;
bool d[maxn];
bool dfs(int v)
{for (int ii=0;ii<n;ii++){if (!d[ii]&&f[v][ii]){d[ii]=1;if (!l[ii]||dfs(l[ii])){l[ii]=v; return 1;}}}return 0;
}
int main()
{scanf("%d%d",&n,&m); ans=0;for (i=1;i<=m;i++){scanf("%d%d",&x,&y); f[i][x]=f[i][y]=1;}for (i=1;i<=m;i++){memset(d,0,sizeof(d));if (dfs(i)) ans++; else break;}printf("%d",ans);return 0;
}
bzoj #1191 超级英雄(二分图匹配)相关推荐
- BZOJ 1191: [HNOI2006]超级英雄Hero 二分图匹配
1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4430 Solved: 2036 [Submit ...
- BZOJ1191: [HNOI2006]超级英雄Hero(二分图匹配)
Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5860 Solved: 2617 [Submit][Status][Discuss] Descri ...
- BZOJ 1059 - 二分图匹配
之前一直把矩阵的元素以为是给定的\(m\)以内- 然后才发现- 哔了狗了- 二分图匹配咯- 如果第\(i\)行第\(j\)列是黑色,那么在代表这一行和这一列的两个节点之间连边.然后匈牙利算法跑 ...
- bzoj 1191 [HNOI2006]超级英雄Hero
Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确 ...
- BZOJ 1191 [HNOI2006]超级英雄Hero
题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=1191 题目大意:有m道题,每道题都对应两种锦囊可以回答对.每种锦囊只能用一次,答对一题继续 ...
- B1192 [HNOI2006]超级英雄Hero 二分图匹配
先检讨一下,前一段时间开学,做题懒得发博客,也不总结...现在捡起来. 这个题一看是裸的二分图匹配,但是仔细一看还有一些区别,就是必须要连续的连接,否则直接退出.因为前一道题答不出来的话后面的题就没有 ...
- [bzoj1191][二分图匹配]超级英雄Hero
Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确回 ...
- BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...
- BZOJ 2547: [Ctsc2002]玩具兵(二分答案+二分图匹配)
传送门 解题思路 可以发现天兵不用管,答案的一个上界是\(2*k\),就是天兵一个个换.刚开始写了个拆\(6\)点的网络流,调了半天发现自己假了..说说正解,首先可以发现交换士兵其实就是种类的交换,那 ...
最新文章
- 常识知识确能被捕获,西湖大学博士探究BERT如何做常识问答
- phpstudy易犯的错误
- Distributed Systems-leader based分布式一致性协议
- Javascript - Jquery - 事件
- queue POJ 2259 Team Queue
- error occurred when trying to upload ui5 project to ABAP repository in win8
- 整理的3500个常用汉字的调用字典
- Node项目部署正常启动后不能访问的问题
- 大赛评委共论技术趋势,大咖观点干货满满!
- 调整Redmine的用户显示格式
- 说说面向对象的故事,主人是人类!(三)
- php获取用户 地区 、ip地址
- mybatis-plus主键生成策略
- C++——动态内存分配new--delete
- matlab ofdm系统 过采样和欠采样,过采样和欠采样
- 常见的10种“瓶颈”
- html实现简单动画,编写自己的代码库(css3常用动画的实现)
- 《SpringSecurity in Action》四:Session共享下的Session并发控制问题
- 用机器学习进行学生成绩预测的数据分析(入门向 附可用源码)
- MySQL5.7修改默认root密码
热门文章
- 关于网络编程socket的listen底层的一点理解
- 基于ETAS RTA-OS的Autosar OS详解(一)—— 任务与中断
- MATLAB代码:高压直流输电 关键词:MMC- HVDC,预测控制,电容均压 两端MMC- HVDC输电模型是基于MAT LAB/simulink软件搭建的
- 高通平台开源代码下载
- 快来直播:视联网助力疫情防控部署
- C++ 函数调用的压栈过程
- chrome浏览器插件,让您浏览器页面游小鱼儿
- mahout过滤推荐结果 Recommender.recommend(long userID, int howMany, IDRescorer rescorer)
- python3表白代码弹窗_抖音弹窗表白代码怎么写 弹窗表白制作方法
- js输出类面试题(四)