题意

题意是给你一张 NMNMNM 的图,每个点有黑色和白色,初始全为白色,每次可以把一个相同颜色的连续区域染色,求最少的染色次数;(n,m<=50)

题解

转化为最短路。对于每一个点与它相邻的相同颜色的点连权值为0的边,对于颜色不同的点连权值为1的点。从每一个点跑单源最短路,把到W点的距离和到B点的距离+1取min作为此点的答案,最后把每一个点的答案取max就是答案。

对于能直接到达的两个颜色相同的点显然只用涂一次,如果不同就要再涂一次,所以这样建图。为了特判全是黑色的情况,所以到B点的距离要加一。显然,这样对于其他情况没有影响。

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int INF=0x3f3f3f3f;
int n,m;
char s[][];
int ans=INF;
int dis[],vis[],head[],cnt;
struct edge{
int to,nxt,w;
}e[];
void add(int u,int v,int w){
cnt++;
e[cnt].nxt=head[u];
e[cnt].to=v;
e[cnt].w=w;
head[u]=cnt;
}
int zb(int x,int y){
return (x-)*m+y;
}
void spfa(int ss){
queue<int> q;
memset(dis,0x3f,sizeof(dis));
dis[ss]=;
q.push(ss);
vis[ss]=;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(dis[v]>dis[u]+e[i].w){
dis[v]=dis[u]+e[i].w;
if(vis[v]==){
vis[v]=;
q.push(v);
}
}
}
}
int tmp=-;
for(int i=;i<=n*m;i++){
if(s[(i-)/m+][(i-)%m+]=='B')tmp=max(tmp,dis[i]+);
else tmp=max(tmp,dis[i]);
}
ans=min(ans,tmp);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
cin>>s[i][j];
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
if(i>)add(zb(i,j),zb(i-,j),(s[i][j]!=s[i-][j]));
if(i<n)add(zb(i,j),zb(i+,j),(s[i][j]!=s[i+][j]));
if(j>)add(zb(i,j),zb(i,j-),(s[i][j]!=s[i][j-]));
if(j<m)add(zb(i,j),zb(i,j+),(s[i][j]!=s[i][j+]));
}
for(int i=;i<=n*m;i++){
spfa(i);
}
printf("%d",ans);
return ;
}

最新文章

  1. Python之路-Day2
  2. Typecast 免费了!献给设计师们的礼物
  3. 入手Intel 750
  4. mybatis-generator-core自动生成do、mapping、dao 代码
  5. 字符串和数字的全排列问题、前i位被i整除问题
  6. python2.7 串口操作方式 编译 .py为windows可运行exe文件
  7. asp.net mvc3 的数据验证(一)
  8. IP、子网的详述 ——IP分类、网关地址,子网掩码、子网作用(转)
  9. 从小故事来谈nginx负载均衡
  10. Django学习之四:Django Model模块
  11. SpringBoot 2.0 pom.xml 配置(热启动)
  12. JAVA面向对象之继承
  13. android AysncTask使用
  14. 模型(model--&gt;orm)系统
  15. flask_admin 笔记五 内置模板设置
  16. 软件需求规格说明书(转自http://blog.csdn.net/li_canhui/article/details/6927540)
  17. Maven的scope的值
  18. iOS-----推送机制(上)
  19. 解决tomcat登录需要给角色授权
  20. Git 命令及使用经验

热门文章

  1. sicily 1091 Maximum Sum (动规)
  2. jqGrid收藏的链接
  3. MyBatis数据持久化(七)多表连接查询
  4. 51nod 1101 换零钱 完全背包的变型 动态规划
  5. activity的23张表
  6. LR编写post请求
  7. 视图层 view
  8. How Javascript works (Javascript工作原理) (五) 深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势
  9. 微信小程序 上传图的功能
  10. 小A点菜 水题 dp 背包