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

 /* 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 ;
}

最新文章

  1. Android启动模式
  2. Java语言面向对象的一些基本特点
  3. sql之left join、right join、inner join的区别
  4. Mybatis 复习 Mybatis 配置 Mybatis项目结构
  5. 一个ajax同步与异步引发的血案。
  6. 关于Html编码问题,例如字符:&amp;#183;
  7. HL AsySocket 服务开发框架 - 总体思路与架构
  8. Oracle用户,权限,角色以及登录管理 scoot 授权
  9. 基于zepto的手机焦点图touchstart touchmove
  10. LeetCode——Search a 2D Matrix
  11. 说说API的防重放机制
  12. vue vuex的用法
  13. Netty源码—六、tiny、small内存分配
  14. MMU二级页表
  15. 2017.11.10 重读C++ Primer
  16. vtiger二次开发
  17. AOP-配合slf4j打印日志
  18. vue Element-UI组件
  19. Es创建索引、设置和修改Mapping
  20. NHibernate 学习导航

热门文章

  1. (博弈论)51NOD 1066 Bash游戏
  2. SSH协议、HTTPS中SSL协议的完整交互过程
  3. nginx部署vue项目 解决方案
  4. MVC、MVP和MVVM的图示
  5. [POI2015]Wycieczki
  6. Manacher BestCoder Round #49 ($) 1002 Three Palindromes
  7. Unity笔记(3)自学第三天
  8. Dota2团战实力蔑视人类,解剖5只“AI英雄”
  9. 由DB2分页想到的,关于JDBC ResultSet 处理大数据量
  10. 用PHP开发自己的独立博客(一)——概述