先对整幅图进行二分图染色,再跑一遍匈牙利算法。

 /* CODEVS1022 */
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath> #define maxn 10008 struct edge{
int u,v,next;
}eg[maxn*]; int dx[]={,,,-};
int dy[]={,-,,};
int a[][];
int cl[maxn];
int n,m,k,sum,ans;
int last[maxn],l[maxn];
bool pd[maxn]; void dfs(int i,int j,int w)
{
int x,y,k;
cl[a[i][j]]=w;
for (k=;k<;k++)
{
int x,y;
x=i+dx[k];
y=j+dy[k];
if ((a[x][y]!=-)&&!cl[a[x][y]])
dfs(x,y,-w);
}
}
void add(int u,int v)
{
eg[++sum].u=u;
eg[sum].v=v;
eg[sum].next=last[u];
last[u]=sum;
}
bool find(int u)
{
for (int i=last[u];i;i=eg[i].next)
{
int v=eg[i].v;
if (!pd[v])
{
pd[v]=;
if ((!l[v])||find(l[v]))
{
l[v]=u;
return ;
}
}
}
return ;
}
int main()
{
int i,j,k;
sum=;
memset(a,-,sizeof(a));
scanf("%d%d%d",&m,&n,&k);
for (i=;i<=m;i++)
for (j=;j<=n;j++)
a[i][j]=(i-)*n+j;
for (int i=;i<=k;i++)
{
int x,y;
scanf("%d",&x);
if (x==) break;
scanf("%d",&y);
a[x][y]=-;
}
for (i=;i<=m;i++)
for (j=;j<=n;j++)
if ((a[i][j]!=-)&&!cl[a[i][j]])
dfs(i,j,);
for (i=;i<=m;i++)
for (j=;j<=n;j++)
if (cl[a[i][j]]) for (k=;k<;k++)
{
int x,y;
x=i+dx[k];
y=j+dy[k];
if ((a[x][y]!=-)&&cl[a[x][y]])
add(a[i][j],a[x][y]);
}
ans=;
memset(l,,sizeof(l));
for (i=;i<=m*n;i++)
if (cl[i]==)
{
memset(pd,,sizeof(pd));
if (find(i)) ans++;
}
//for (i=1;i<=m*n;i++) printf("%d ",l[i]);
printf("%d",ans);
return ;
}

CODEVS1022 覆盖 (二分图染色+匈牙利算法)的更多相关文章

  1. BZOJ1443 游戏game (二分图染色+匈牙利算法)

    先对整幅图进行二分图染色,再跑一遍匈牙利算法.如果最大匹配数=点数*2,那么输出WIN. 对于任何一个非必须在最大匹配上的点,即为所求的点. Program Test375num2; type arr ...

  2. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. USACO 4.2 The Perfect Stall(二分图匹配匈牙利算法)

    The Perfect StallHal Burch Farmer John completed his new barn just last week, complete with all the ...

  4. HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]

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

  5. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

  6. HDU - 1045 Fire Net (二分图最大匹配-匈牙利算法)

    (点击此处查看原题) 匈牙利算法简介 个人认为这个算法是一种贪心+暴力的算法,对于二分图的两部X和Y,记x为X部一点,y为Y部一点,我们枚举X的每个点x,如果Y部存在匹配的点y并且y没有被其他的x匹配 ...

  7. UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法

    二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...

  8. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  9. Ural1109_Conference(二分图最大匹配/匈牙利算法/网络最大流)

    解题报告 二分图第一题. 题目描写叙述: 为了參加即将召开的会议,A国派出M位代表,B国派出N位代表,(N,M<=1000) 会议召开前,选出K队代表,每对代表必须一个是A国的,一个是B国的; ...

随机推荐

  1. C基础-对malloc的使用与理解

    一.malloc函数分析 1.函数原型 void * malloc(size_t  size); 2.Function(功能) Allocates a block of size bytes of m ...

  2. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...

  3. 转 linux shell自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

  4. 高性能队列disruptor为什么这么快?

    背景 Disruptor是LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级).基于Disruptor开发的系统单线程能支撑每秒600万 ...

  5. 揭开WebService的神秘面纱

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...

  6. 专题十一:实现一个基于FTP协议的程序——文件上传下载器

    引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...

  7. 利用freemarker导出页面格式复杂的excel

    刚开始大家可能会利用poi生成简单的excel,但是遇到需要生成复杂的excel,poi导出excel就比较困难,这时候可以利用freemarker来渲染实现实现生成复杂的excel, 首先,将exc ...

  8. Visual Studio TFS

    Overview:Active Directory环境下搭建TFS(一个domain内,with Domain Controller): 1)最简单的环境(这俩拓扑是从TFSAdmin文档中截取的,从 ...

  9. 初始MongoDB------将MongoDB创建为Windows服务

    上一遍我写的是关于基本的MongoDB的安装,可能不是很详细,也写得很不好,不过这次我们会详细的说说,如果将MongoDB部署在你的Windows电脑上. 1.配置环境变量 如果每次都要在CMD进入M ...

  10. GLPI开源资产管理系统

    GLPI一款资产管理系统,功能比较强大,东西比较多,放张图,有机会再深入研究