BZOJ 1191 [HNOI2006]超级英雄Hero:二分图匹配 匈牙利算法
2024-10-20 01:29:06
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191
题意:
有m道题,每答对一题才能接着回答下一个问题。
你一道题都不会,但是你有n个“锦囊妙计”(每个只能用一次)。
对于每道题,你只能用该题规定的两种锦囊中的一种,来解决这道题。
问你最多能解决多少道题。
题解:
二分图最大匹配。
匈牙利算法。
问题与锦囊匹配。
最大匹配即为最多回答数。
但是题目中要求题目必须连续回答,不能中断。
所以在给每一个问题配对时,一旦匹配不上,就终止匹配。
AC Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 1005 using namespace std; int n,m;
int ans=;
int match[MAX_N];
bool vis[MAX_N];
bool edge[MAX_N][MAX_N]; bool hungary(int now)
{
for(int i=;i<n;i++)
{
if(edge[now][i] && !vis[i])
{
vis[i]=true;
if(match[i]==- || hungary(match[i]))
{
match[i]=now;
return true;
}
}
}
return false;
} void read()
{
memset(edge,false,sizeof(edge));
cin>>n>>m;
int a,b;
for(int i=;i<m;i++)
{
cin>>a>>b;
edge[i][a]=true;
edge[i][b]=true;
}
} void solve()
{
memset(match,-,sizeof(match));
for(int i=;i<m;i++)
{
memset(vis,false,sizeof(vis));
if(hungary(i)) ans++;
else break;
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}
最新文章
- 获取<;img src=";sdf.jpg"; Big=";sf.jpg";>;中的big的值
- 黄聪:Access-Control-Allow-Origin,JS跨域解决办法
- cocos2d ios 环境搭建
- Hark的数据结构与算法练习之臭皮匠排序
- SQLServer查询速度慢的原因
- hdu 1018
- 解决UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position 问题(转)
- 异常:failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException]
- iOS开源库--最全的整理
- Luogu 1006 传纸条 / NOIP 2008 传纸条(动态规划)
- table行随鼠标变色
- 【Python】动手分析天猫内衣售卖数据,得到你想知道的信息
- Eclipes导入工程
- 判断字符串是否为正整数 &; 浮点小数
- Vim——回顾整理
- webstrom 安装Babel
- L2-022 重排链表(链表)
- Html解析
- 【Mybatis】<;foreach>;标签在mybatis中的使用
- POJ 2019 Cornfields [二维RMQ]