引言

据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 超级英雄(二分图匹配)相关推荐

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

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

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

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

  3. BZOJ 1059 - 二分图匹配

    之前一直把矩阵的元素以为是给定的\(m\)以内- 然后才发现- ​ 哔了狗了- ​ 二分图匹配咯- 如果第\(i\)行第\(j\)列是黑色,那么在代表这一行和这一列的两个节点之间连边.然后匈牙利算法跑 ...

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

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

  5. BZOJ 1191 [HNOI2006]超级英雄Hero

    题目链接:http://www.zybbs.org/JudgeOnline/problem.php?id=1191 题目大意:有m道题,每道题都对应两种锦囊可以回答对.每种锦囊只能用一次,答对一题继续 ...

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

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

  7. [bzoj1191][二分图匹配]超级英雄Hero

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

  8. BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)

    题目链接 不难想到每次一定是切一片. 如果是平面,很容易想到直接做二分图匹配.对于3维的? 可以发现min(a,b,c)的最大值只有\(\sqrt[3]{n}≈17\),我们暴力枚举这一最小值代表的是 ...

  9. BZOJ 2547: [Ctsc2002]玩具兵(二分答案+二分图匹配)

    传送门 解题思路 可以发现天兵不用管,答案的一个上界是\(2*k\),就是天兵一个个换.刚开始写了个拆\(6\)点的网络流,调了半天发现自己假了..说说正解,首先可以发现交换士兵其实就是种类的交换,那 ...

最新文章

  1. 常识知识确能被捕获,西湖大学博士探究BERT如何做常识问答
  2. phpstudy易犯的错误
  3. Distributed Systems-leader based分布式一致性协议
  4. Javascript - Jquery - 事件
  5. queue POJ 2259 Team Queue
  6. error occurred when trying to upload ui5 project to ABAP repository in win8
  7. 整理的3500个常用汉字的调用字典
  8. Node项目部署正常启动后不能访问的问题
  9. 大赛评委共论技术趋势,大咖观点干货满满!
  10. 调整Redmine的用户显示格式
  11. 说说面向对象的故事,主人是人类!(三)
  12. php获取用户 地区 、ip地址
  13. mybatis-plus主键生成策略
  14. C++——动态内存分配new--delete
  15. matlab ofdm系统 过采样和欠采样,过采样和欠采样
  16. 常见的10种“瓶颈”
  17. html实现简单动画,编写自己的代码库(css3常用动画的实现)
  18. 《SpringSecurity in Action》四:Session共享下的Session并发控制问题
  19. 用机器学习进行学生成绩预测的数据分析(入门向 附可用源码)
  20. MySQL5.7修改默认root密码

热门文章

  1. 关于网络编程socket的listen底层的一点理解
  2. 基于ETAS RTA-OS的Autosar OS详解(一)—— 任务与中断
  3. MATLAB代码:高压直流输电 关键词:MMC- HVDC,预测控制,电容均压 两端MMC- HVDC输电模型是基于MAT LAB/simulink软件搭建的
  4. 高通平台开源代码下载
  5. 快来直播:视联网助力疫情防控部署
  6. C++ 函数调用的压栈过程
  7. chrome浏览器插件,让您浏览器页面游小鱼儿
  8. mahout过滤推荐结果 Recommender.recommend(long userID, int howMany, IDRescorer rescorer)
  9. python3表白代码弹窗_抖音弹窗表白代码怎么写 弹窗表白制作方法
  10. js输出类面试题(四)