传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1281

题意概括:

有N*M大的棋盘,要在里面放尽量多的“车”,求最多能放的车的个数,和为了放最多的车有多少个各自必须放车。

解题思路:
由“车”的规则可知,同一行或者同一列只能放一个车,可以放车的点作为边,对行和列最大匹配。然后遍历去点,如果去掉该点后最大匹配数减少,则说明那个点是不能去掉的点。

AC code:

 #include <cstdio>
#include <istream>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
#define LL long long
using namespace std; const int MAXN = ; struct node
{
int x, y;
}cc[MAXN];
int mmp[MAXN][MAXN];
int linker[MAXN];
bool used[MAXN];
int N, M, K; bool Find(int u)
{
for(int v = ; v <= M; v++){
if(mmp[u][v] && !used[v]){
used[v] = true;
if(linker[v] == - || Find(linker[v])){
linker[v] = u;
return true;
}
}
}
return false;
} int Match()
{
int res = ;
memset(linker, -, sizeof(linker));
for(int u = ; u <= N; u++){
memset(used, false, sizeof(used));
if(Find(u)) res++;
}
return res;
} int main()
{
int uu, vv, cnt = , T_case = ;
while(~scanf("%d %d %d", &N, &M, &K)){
memset(mmp, , sizeof(mmp));
cnt = ;
T_case++;
for(int i = ; i < K; i++){
scanf("%d%d", &uu, &vv);
mmp[uu][vv] = ;
cc[i].x = uu;
cc[i].y = vv;
}
int ans = Match();
// puts("zjy");
int ans_node = ;
for(int i = ; i < K; i++){
mmp[cc[i].x][cc[i].y] = ;
if(ans > Match()) ans_node++;
mmp[cc[i].x][cc[i].y] = ;
} printf("Board %d have %d important blanks for %d chessmen.\n", T_case, ans_node, ans); }
return ;
}

HDU 1281 棋盘游戏 【二分图最大匹配】的更多相关文章

  1. HDU 1281 - 棋盘游戏 - [二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  2. HDU 1281——棋盘游戏——————【最大匹配、枚举删点、邻接表方式】

     棋盘游戏 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  3. (step6.3.5)hdu 1281(棋盘游戏——二分图的完美匹配)

    题目大意:本体是中文题.读者可以直接在OJ上看 解题思路: 1)完美匹配:所有的端点都是匹配点 2)对于二分图的完美匹配,我们需要用一个数组来存储匹配点.(而二分图的其他问题(我们则可以直接使用变量来 ...

  4. HDU 1281 棋盘游戏 (枚举+最大匹配)

    <题目链接> Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单 ...

  5. hdu 1281 棋盘游戏(二分图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 每行每列作为节点,给可以放车的点将对应的行列连边,最多可放置的车即为建二分图后的最大匹配,跑一边 ...

  6. hdu 1281 棋盘游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  7. hdu 1281 棋盘游戏(二分匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    M ...

  8. D - 棋盘游戏 - HDU 1281(二分图匹配)

    分析:先求出来最大匹配数,然后用匹配的点一个一个去除看看能否达到最大匹配,能的话就是关键点(很暴力啊),不过竟然才31ms ************************************** ...

  9. hdu 1281 棋盘游戏 (二分匹配)

    棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

随机推荐

  1. IIS网站不能访问

    摘要:IIS环境下,部署的网站在服务器上可以正常访问,客户端却不能访问. 原因:防火墙入站规则万维网服务没有开启.

  2. [android] 天气app布局练习(二)

    主要练习一下GridView MainActivity.java package com.example.weatherreport; import java.util.ArrayList; impo ...

  3. maven <resources>标签

    <build> <finalName>com_dubbo_config</finalName> <resources> <resource> ...

  4. 记一次Ubuntu 16.04 server安装中的坑

    最近博主搞了一台迷你主机,又刚好有时间去折腾,所以我打算把这台机子打造成一台迷你服务器,用来跑跑爬虫.挂挂网站 介于我我这台机子的配置比较垃圾(intel J1900+4G+64G),跑起Window ...

  5. 译:Java局部变量类型推断(Var类型)的26条细则

    原文链接:https://dzone.com/articles/var-work-in-progress 作者:Anghel Leonard 译者:沈歌 Java局部变量类型推断(LVTI),简称va ...

  6. Grid标签计算结果集中的合计行

    方法一: var detailT= grid.gettable("11"); var r=detailT.rows.length; detailT.rows[r-1].cells[ ...

  7. 二、redis的配置

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  8. centos自带python2.6无法使用pip命令

    1.首先检查linux有没有安装python-pip包,直接执行 yum install python-pip,或者 which pip 我的已经安装了 2.没有可用软件包 python-pip.就执 ...

  9. Oracle自定义函数&加密

    在sql中频繁使用的功能(逻辑.加密等)可以写成自定义函数进行封装,之后再调用即可. CREATE OR REPLACE FUNCTION "函数名" (参数名 参数类型 参数数据 ...

  10. 在 CentOS6 上安装 GraphicsMagick-1.3.30

    在 CentOS6 上安装 GraphicsMagick-1.3.30 1.简介: 1.1.在介绍 GraphicsMagick 前我们不得不先介绍下 ImageMagick: ImageMagick ...