POJ 2226 二分图最小点覆盖
题意
传送门 POJ 2226
题解
每个泥泞地需要被至少一块横着或竖着的板子覆盖,那么预处理出不能覆盖草地的限制下,所有尽可能长的横板子与竖板子。对可覆盖同一块泥泞地的 222 块板子连边,则转化为二分图最小点覆盖问题。
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 55, maxv = maxn * maxn, maxe = maxv * maxn;
int N, M, fn[maxn][maxn], fm[maxn][maxn];
char fld[maxn][maxn];
int tot, head[maxv], to[maxe], nxt[maxe], match[maxv];
bool vs[maxv];inline void add(int x, int y) { to[++tot] = y, nxt[tot] = head[x], head[x] = tot; }bool dfs(int x)
{for (int i = head[x]; i; i = nxt[i]){int y = to[i], z = match[y];if (vs[y])continue;vs[y] = 1;if (z == -1 || dfs(z)){match[y] = x;return 1;}}return 0;
}int main()
{scanf("%d%d", &N, &M);for (int i = 0; i < N; ++i)scanf("%s", fld + i);int n = 0, m = 0;for (int i = 0; i < N; ++i)for (int j = 0; j < M; ++j)if (fld[i][j] == '*'){fn[i][j] = n;if (j == M - 1 || fld[i][j + 1] == '.')++n;}for (int j = 0; j < M; ++j)for (int i = 0; i < N; ++i)if (fld[i][j] == '*'){fm[i][j] = m;if (i == N - 1 || fld[i + 1][j] == '.')++m;}for (int i = 0; i < N; ++i)for (int j = 0; j < M; ++j)if (fld[i][j] == '*')add(fn[i][j], fm[i][j]);memset(match, -1, sizeof(match));int res = 0;for (int i = 0; i < n; ++i)memset(vs, 0, sizeof(vs)), res += dfs(i);printf("%d\n", res);return 0;
}
POJ 2226 二分图最小点覆盖相关推荐
- 二分图最小点覆盖构造方案+König定理证明
原文链接 前言 博主很笨 ,如有纰漏,欢迎在评论区指出讨论. 二分图的最大匹配使用 DinicDinicDinic 算法进行实现,时间复杂度为 O(ne)O(n\sqrt{e})O(ne),其中, ...
- POJ - 3041 Asteroids 二分图最小点覆盖
题目链接 二分图一个很重要的定理:看了很多大神的博客表示看不懂为什么,以后再看 最小点覆盖=最大匹配 最小点覆盖就是在二分图里边,选择一个点,将所有与该点相链接的边删去,问最小找多少个点能够把所有的边 ...
- hihocoder 1127 : 二分图三·二分图最小点覆盖和最大独立集
最大独立集问题: 在图G中选取尽可能多的点,使得任意两个点之间没有连边. 结论:最大独立集的点数 = 总点数 - 二分图最大匹配 证明: 假设最大独立集的点数为|U|,二分图最大匹配的匹配数为|M|, ...
- hdu 1054 Strategic Game 二分图最小点覆盖
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意: 给出一个无向图,求最小点覆盖. 思路: 用网络流来做设立一个超级源点和一个超级汇点. 每 ...
- 二分图最小点覆盖König定理的简单证明
König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有 ...
- 【二分图|最小点覆盖集】König定理及其证明
转自Matrix67 二分图最大匹配的König定理及其证明 如果你看不清楚第二个字母,下面有一个大号字体版本: 二分图最大匹配的König定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K ...
- 图论——二分图——最小点覆盖
最小点集覆盖 == 最大匹配 一.什么是最小点覆盖 点覆盖的概念定义: 对于图G=(V,E)中的一个点覆盖是一个集合S⊆V使得每一条边至少有一个端点在S中. 最小点覆盖:点个数最少的S集合. 这是我个 ...
- POJ - 3041 Asteroids(最小点覆盖-二分图最大匹配)
题目链接:点击查看 题目分析:给出一个n*n的矩阵,其中有m个敌人,每一次操作可以清除某一列或某一行中的所有敌人,问若想清除所有敌人,至少需要多少次操作 题目分析:第一次见这种题,就是最小覆盖是要用最 ...
- [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)
传送门 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a.b.c 均为正整数.为了实验的方便,它被划分为abc ...
最新文章
- OFBiz + Opentaps 仓储设施 基本管理
- 选择“Win32汇编”的三大理由?
- 图像处理之让手心长出眼睛,其实嘴也可以
- SAP同一公司不同工厂间物料转储方案比较
- 《糖豆人:终极淘汰赛》:如何打造最难关卡「水涨爬高」
- html中th 与thead tbody的 使用
- Windows下用CMake编译JsonCpp及配置(适合新手)
- VMware桥接模式下主机和和虚机间互相ping不通的处理方法
- 物联网安全形势严峻——除严加管控外别无选择
- D-News|扎克伯格下月发布人工智能管家,美放宽无人机商用飞行标准
- Struts分页的一个实现
- 我的Latex中文报告模板
- i78750h怎么样
- threejs 三面体_three.js几何体对象_三维建模_郭隆邦技术博客
- 高粱副产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 手机重力感应控制电脑(一)
- C语言 实现 最长名字输出
- Algorithm Gossip: 最大访客数
- 关于使用geoip2获取IP地址的位置
- 一周技术学习笔记(第68期)-像练习硬笔书法那样写代码