hdu 1281 棋盘游戏(二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281
每行每列作为节点,给可以放车的点将对应的行列连边,最多可放置的车即为建二分图后的最大匹配,跑一边匈牙利算法即可。
第二问重要的棋盘点(其实就是问某个可以放置车的点被删除之后,会不会影响最终放置车的数量),也就是会不会影响二分图的最大匹配数,其实就是删除这个点对应行列连接的边,如果二分图最大匹配小于原有,则是影响的,也就是可以等价为重要点,依次删除边继续跑匈牙利算法,记录重要点个数即可。
AC代码:
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int N,M,K;
int visit[105];//访问数组
bool g[105][105];//建立二分图
int match[105];//匹配数组
int x[105];//存储行
int y[105];//存储列
bool dfs(int u){
for(int i = 1;i<=M;i++){
if(g[u][i] && !visit[i]){
visit[i] = true;
if(match[i] == -1 || dfs(match[i])){
match[i] = u;
return true;
}
}
}
return false;
}
int hungary(){
int ans = 0;
memset(match,-1,sizeof(match));
for(int i = 1;i<=N;i++){
memset(visit,0,sizeof(visit));
if(dfs(i))
ans++;
}
return ans;
}
int main(){
int cnt = 1;
while(~scanf("%d%d%d",&N,&M,&K)){
memset(g,false,sizeof(g));
for(int i = 0;i<K;i++){
scanf("%d%d",&x[i],&y[i]);
g[x[i]][y[i]] = 1;
}
int ans2 = hungary();
int res = 0;
for(int i = 0;i<K;i++){
g[x[i]][y[i]] = 0;//删除边,依次枚举最大匹配
if(hungary()<ans2){
res++;
}
g[x[i]][y[i]] = 1;
}
printf("Board %d have %d important blanks for %d chessmen.\n",cnt,res,ans2);
cnt++;
}
return 0;
}
hdu 1281 棋盘游戏(二分图)的更多相关文章
- HDU 1281 - 棋盘游戏 - [二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- (step6.3.5)hdu 1281(棋盘游戏——二分图的完美匹配)
题目大意:本体是中文题.读者可以直接在OJ上看 解题思路: 1)完美匹配:所有的端点都是匹配点 2)对于二分图的完美匹配,我们需要用一个数组来存储匹配点.(而二分图的其他问题(我们则可以直接使用变量来 ...
- hdu 1281 棋盘游戏
http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- hdu 1281 棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 1281——棋盘游戏——————【最大匹配、枚举删点、邻接表方式】
棋盘游戏 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- HDU 1281 棋盘游戏 【二分图最大匹配】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281 题意概括: 有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多 ...
- D - 棋盘游戏 - HDU 1281(二分图匹配)
分析:先求出来最大匹配数,然后用匹配的点一个一个去除看看能否达到最大匹配,能的话就是关键点(很暴力啊),不过竟然才31ms ************************************** ...
- hdu 1281 棋盘游戏 (二分匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1281棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘, ...
随机推荐
- WPF实现高仿统计标题卡
飘哇~~~,在家数瓜子仁儿,闲来无事,看东看西,也找点儿,最近正在看看WPF动画,光看也是不行,需要带着目的去学习,整合知识碎片,恰巧,看到Github中一个基于Ant Designer设计风格的后台 ...
- int long的数据范围
java 整数型 byte 1字节 -128~127 -2^7~2^7-1 short 2字节 -32768~32767 int 4个字节 -2147483648~2147483647 -2 ...
- 计算器程序编写_python
一.计算一串字符串的最终值,相当于eval函数功能: #!/usr/bin/env python # _*_ coding:utf-8 _*_ #Author:chenxz import re def ...
- xss和sql注入学习1
在本地搭建一个存在漏洞的网站,验证xss漏洞和SQL注入的利用方法. 使用phpStudy工具搭建一个美食CMS网站平台. 0x01 xss测试 打开调试模式,定位姓名栏输入框: 尝试在value中 ...
- STL-map-A - Let the Balloon Rise
A - Let the Balloon Rise Contest time again! How excited it is to see balloons floating around. But ...
- SIFT解析(一)高斯模糊
"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur).它将正态分布(又名"高斯分布")用于图像处理. 所谓&qu ...
- Windows DOS下查看硬盘分区
运行cmd Diskpart //加载 list Disk //列出硬盘 list Volume //列出分区 Select Disk //选择 编号0的硬盘 list Partition //列出当 ...
- NVMe over Fabrics 协议Discovery服务交互过程跟踪
Discovery服务过程跟踪 对于NVMe over Fabrics的subsystem,有两种类型:Discovery子系统和NVM子系统.这里介绍与Discovery子系统相关的交互内容(即:在 ...
- django 搭建一个投票类网站(三)
之前修改index的视图的代码,工作原理是先试用loader方法加载视图,然后HTTPResponse方法初始化一个HTTPResponse对象并返回给浏览器.对于很多django视图来说,他们的工作 ...
- NW.js桌面应用开发(一)
NWjs中文网 Electron中文网 一些需要了解的历史与特性,其实就是 NW.js 和 Electron的争议,建议还是亲自阅读一下各自的官网说明 1.下载SDK版工具 从淘宝NPM镜像下载,速度 ...