Landlocked

Time Limit: 5 Sec Memory Limit: 128 MB

Submit: 288 Solved: 39

Description

Canada is not a landlocked country: the country touches at least one ocean (in fact, it touches three).

There are 46 countries (including Bolivia and Mongolia, for example) which are landlocked. That is, they do not touch an ocean, but by going through one other country, an ocean can be reached. For example, a person in Mongolia can get to an ocean by passing through Russia.

Liechtenstein and Uzbekistan are the only two countries in the world which are land-landlocked. That is, not only are they land-locked, but all countries which surround these two countries are land-locked countries. Thus, one would have to pass through at least two different countries when leaving Uzbekistan before arriving at an ocean.

Your task is to determine how landlocked each country is on a given map. We say that a country is not landlocked (recorded as 0) if it touches water in any adjacent cell in either a horizontal, vertical, or diagonal direction. If a country is landlocked, you must calculate the minimum number of borders that one must cross in order to travel from the country to water. Each step of such a journey must be to a cell that is adjacent in either a horizontal, vertical, or diagonal direction. Crossing a border is defined as taking a step from a cell in one country to an adjacent cell in a different country.

Note that countries may not be connected to themselves (as in a country formed of islands). In this case, the landlocked value for the country is the minimal of each connected region of the country.

Input

The first line contains N and M (1 ≤ N, M ≤ 1000).

On each of the next N lines, there are M capital letters. Each country will be represented by a unique letter, with the exception that the letter W is reserved to indicate the water in the oceans or seas that will be used to determine the how landlocked each country is.

Output

The output consists of the country letter followed by a space, followed by the landlockedness for that particular country. Output should be in alphabetical order

Sample Input

7 10

WWWWWCCDEW

WWWWCCEEEW

WTWWWCCCCW

WWFFFFFFWW

WWFAAAAFWW

WWFABCAFFW

WWFAAAAFWW

Sample Output

A 1

B 2

C 0

D 1

E 0

F 0

T 0

采用从外到内的方式,由海洋到城市,进行BFS搜索,相同的城市进行DFS搜索。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm>
#define LL long long using namespace std; const int INF = 0x3f3f3f3f; int Dir[][2]={{1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}}; typedef struct node
{
int x,y,dis;
}Node; char str[1100][1100]; bool vis[1100][1100]; int dis[1100][1100]; int Dis[300]; int n,m; queue<Node>Q; bool Ok(int x,int y)
{
if(x>=0&&x<n&&y>=0&&y<m&&!vis[x][y])
{
return true;
}
return false;
} void dfs(int x,int y,int num)
{
int Fx,Fy;
Node s;
// printf("%d %d\n",x,y);
for(int i=0;i<8;i++)
{
Fx=x+Dir[i][0];
Fy=y+Dir[i][1];
if(Ok(Fx,Fy))
{
if(str[Fx][Fy]==str[x][y])
{
vis[x][y]=true;
s.x=Fx;
s.y=Fy;
s.dis=num;
Q.push(s);
dfs(Fx,Fy,num);
}
}
}
} void bfs(int x,int y,int num)
{
dis[x][y]=num; int Fx,Fy; Node s; for(int i=0;i<8;i++)
{
Fx=x+Dir[i][0]; Fy=y+Dir[i][1]; if(Ok(Fx,Fy))
{
vis[Fx][Fy]=true; if(str[Fx][Fy]!=str[x][y])
{
s.x=Fx;
s.y=Fy;
s.dis=num+1;
Q.push(s);
dfs(Fx,Fy,num+1);
}
}
}
} int main()
{
Node s;
while(~scanf("%d %d",&n,&m))
{
for(int i=0;i<n;i++)
{
scanf("%s",str[i]);
}
memset(vis,false,sizeof(vis)); memset(dis,INF,sizeof(dis)); memset(Dis,INF,sizeof(Dis)); for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(str[i][j]=='W')
{
vis[i][j]=true; bfs(i,j,-1);
}
}
}
while(!Q.empty())
{
s=Q.front();
Q.pop(); bfs(s.x,s.y,s.dis);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(str[i][j]!='W') Dis[(int)str[i][j]]=min(Dis[(int)str[i][j]],dis[i][j]);
}
} for(int i=0;i<300;i++)
{
if(Dis[i]!=INF)
{ printf("%c %d\n",i,Dis[i]); }
}
}
return 0;
}

浙江理工2015.12校赛-F Landlocked的更多相关文章

  1. 浙江理工2015.12校赛-A

    孙壕请一盘青岛大虾呗 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 577 Solved: 244 Description 话说那一年zstu与gdut ...

  2. 浙江理工2015.12校赛-G Jug Hard

    Jug Hard Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1172 Solved: 180 Description You have two e ...

  3. 浙江理工2015.12校赛-B 七龙珠

    七龙珠 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 781 Solved: 329 Description 话说孙壕请吃了青岛大虾后,一下子变穷了,就 ...

  4. 校赛F

    问题描述 例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3].换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, ...

  5. 2015 GDUT校赛

    周末打了个GDUT的校赛,也是作为SCAU的一场个人排位. 比赛中竟然卡了个特判,1个半钟就切了5条了,然后一直卡. 还有其他两条可以做的题也没法做了,性格太执着对ACM来说也是错呀. 讲回正题 . ...

  6. 校赛F 比比谁更快(线段树)

    http://acm.cug.edu.cn/JudgeOnline/problem.php?cid=1153&pid=5 题意:给你一个字符串,各两个操作: ch=0,[l,r]降序 ch=1 ...

  7. 2017年浙江理工大学程序设计竞赛校赛 题解&源码(A.水, D. 简单贪心 ,E.数论,I 暴力)

    Problem A: 回文 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1719  Solved: 528 Description 小王想知道一个字 ...

  8. 线性期望(BUPT2015校赛.F)

    将整体期望分成部分期望来做. F. network 时间限制 3000 ms 内存限制 65536 KB 题目描述 A social network is a social structure mad ...

  9. 2015 多校赛 第三场 1002 (hdu 5317)

    Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more i ...

随机推荐

  1. centos install zookeeper cluster

    1.apache官方下载, 2.新版本需要jdk环境,然后配置好jdk环境 3.解压zookeeper,进入解压后的conf,新建zoo.cfg (删掉自带的cfg)内容如下 tickTime=200 ...

  2. Web前端开发基础 第四课(CSS元素模型)

    css布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上,又 ...

  3. 领导者/追随者(Leader/Followers)模型和半同步/半异步(half-sync/half-async)模型都是常用的客户-服务器编程模型

    领导者-追随者(Leader/Followers)模型的比喻 半同步/半异步模型和领导者/追随者模型的区别: 半同步/半异步模型拥有一个显式的待处理事件队列,而领导者-追随者模型没有一个显式的队列(很 ...

  4. Apache Spark技术实战之5 -- SparkR的安装及使用

    欢迎转载,转载请注明出处,徽沪一郎. 概要 根据论坛上的信息,在Sparkrelease计划中,在Spark 1.3中有将SparkR纳入到发行版的可能.本文就提前展示一下如何安装及使用SparkR. ...

  5. js判断字符是否包含字母汉字

    <script type="text/javascript"> function check(str) { if (escape(str).indexOf(" ...

  6. P1073 最优贸易

    #include <bits/stdc++.h> using namespace std; const int maxn = 100005; int head1[maxn], head2[ ...

  7. 使用Mongo官方驱动操作Mongo数据库

    首先到 https://github.com/mongodb/mongo-csharp-driver/downloads 下载Mongo官方驱动 下载完成后引用到项目中 public class Co ...

  8. 升级到Xcode6.2后 免证书真机调试出错的问题

    我的本来是Xcode6.1 可以正常免证书真机调试,升级到Xcode6.2以后,真机调试就报错,然后就又按照这篇文章http://www.cnblogs.com/liuliuliu/p/4030524 ...

  9. Maven-010-maven 编译报错:Failure to ... in ... was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced.

    今晚在编译 maven 项目的时候,命令行报错,出现 Failure to ... in ... 类似错误,详细的错误信息如下所示: [INFO] -------------------------- ...

  10. Android-Activity使用(2)

    接着Android-Activity使用(1)实现页面跳转 一.在main_activity中添加按钮,注意 id的写法为"@+id/"+"id真正的名字" & ...