2252: [2010Beijing wc]矩阵距离

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 563  Solved: 274
[Submit][Status][Discuss]

Description

假设我们有矩阵,其元素值非零即1

a11…… a1m

…………….

an1…….anm

定义aij与akl之间的距离为D(aij,akl)=abs(i-k)+abs(j-L) 

Input

输入文件的第一行为两个整数,分别代表n和m。 
接下来的n行,第i行的第 j个字符代表aij

Output

输出包含N行,每行M个用空格分开的数字,其中第i行第J个数字代表
Min(D(aij,axy) 1<=x<=N 1<=y<m,且axy=1

Sample Input

3 4
0001
0011
0110

Sample Output

3 2 1 0
2 1 0 0
1 0 0 1

HINT

对于100%的数据,满足 0 <  m n <=1000

Source

 
题解:
广搜。
从1开始搜即可。
 #include<bits/stdc++.h>
using namespace std;
#define MAXN 1010
#define INF 1e9
int fx[]={,,,-};
int fy[]={,-,,};
int dis[MAXN][MAXN],a[MAXN][MAXN],qx[MAXN*MAXN],qy[MAXN*MAXN];
char s[MAXN][MAXN];
bool vis[MAXN][MAXN];
int main()
{
int n,m,i,j,wzx,wzy,head,tail,ux,uy,vx,vy;
scanf("%d %d",&n,&m);
for(i=;i<=n;i++)scanf("\n%s",s[i]+);
wzx=;wzy=;
memset(dis,,sizeof(dis));
head=;tail=;memset(vis,false,sizeof(vis));
for(i=;i<=n;i++)
{
for(j=;j<=m;j++){dis[i][j]=INF;a[i][j]=s[i][j]-'';if(a[i][j]==){wzx=i,wzy=j;qx[++tail]=i;qy[tail]=j;vis[i][j]=true;dis[i][j]=;}}
}
//memset(qx,0,sizeof(qx));
//memset(qy,0,sizeof(qy));
//memset(vis,false,sizeof(vis));
//vis[wzx][wzy]=true;
//head=0;tail=1;qx[tail]=wzx;qy[tail]=wzy;
//dis[wzx][wzy]=0;
while(head!=tail)
{
head++;if(head==)head=;
ux=qx[head];
uy=qy[head];
for(i=;i<=;i++)
{
vx=ux+fx[i];
vy=uy+fy[i];
if(vx>=&&vx<=n&&vy>=&&vy<=m&&vis[vx][vy]==false)
{
if(dis[vx][vy]>dis[ux][uy]+)
{
vis[vx][vy]=true;
dis[vx][vy]=dis[ux][uy]+;
tail++;if(tail==)tail=;
qx[tail]=vx;
qy[tail]=vy;
}
if(a[vx][vy]==){dis[vx][vy]=;vis[vx][vy]=true;}
}
}
vis[ux][uy]=false;
}
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)printf("%d ",dis[i][j]);
printf("\n");
}
fclose(stdin);
fclose(stdout);
return ;
}

Bzoj 2252: [2010Beijing wc]矩阵距离 广搜的更多相关文章

  1. BZOJ 2252: [2010Beijing wc]矩阵距离

    题目 2252: [2010Beijing wc]矩阵距离 Time Limit: 10 Sec  Memory Limit: 256 MB Description 假设我们有矩阵,其元素值非零即1 ...

  2. BZOJ2252: [2010Beijing wc]矩阵距离

    题解: 我脑子里都是翔??? bfs一下就行了 我居然还想什么kd tree!真是too naive,,, #include<cstdio> #include<cstdlib> ...

  3. 【BFS】bzoj2252 [2010Beijing wc]矩阵距离

    要注意一开始将所有为'1'的点入队,然后通过一次BFS去更新所有点的距离,直到无法更新为止. #include<cstdio> #include<queue> #include ...

  4. bzoj 2252 [ 2010 Beijing wc ] 矩阵距离 —— 多源bfs

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2252 又没能自己想出来... 一直在想如何从每个1开始广搜更新答案,再剪剪枝,什么遇到1就不 ...

  5. bzoj 2251: [2010Beijing Wc]外星联络 后缀数组

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 424  Solved: 232[Submit][ ...

  6. BZOJ 2251: [2010Beijing Wc]外星联络

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 795  Solved: 477[Submit][ ...

  7. ●BZOJ 2251 [2010Beijing Wc]外星联络

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2251 题解: 后缀数组,倍增,RMQ 题意:把重复次数超过 1次的子串按字典序输出它们重复的 ...

  8. bzoj 2251: [2010Beijing Wc]外星联络【SA】

    先求SA,然后按字典序从小到大枚举子串,每到一个后缀从长到短枚举子串(跳过长为he[i]的和前一段重复的子串),然后维护一个点p,保证i~p之间最小的he>=当前枚举长度,p是单调向右移的 然后 ...

  9. TZOJ 5279 马拉松比赛(广搜)

    描述 有一块矩形的海域,其中有陆地也有海洋,这块海域是CSUFT_ACM集训队的训练基地,这一天,昌神说要集训队的队员不能总是训练,于是昌神提出了中南林ACM集训队第一场环陆马拉松比赛,顾名思义就是围 ...

随机推荐

  1. 虚拟机环境Centos如何上网

    虚拟机环境Centos如何上网----------by ruffianfish.痞子鱼 因为我是用的虚拟机的环境,所以一切操作角度从虚拟机出发. 虚拟机环境的优点: 适合新手学习linux 永远不要怕 ...

  2. 开发错误日志之Unix/Linux命令未执行或无结果等且程序无错误

    在Unix/Linux环境中开发时,特别要注意权限问题,否则经常找不到错误的原因,其实就是因为权限所致.

  3. 如何实现.so共享库文件

    .so共享库相当于window中的.DLL文件 两个进程同时调用了.so文件,进程就会加载的.so文件到各自的内存空间,而不能实现进程间通讯. .so文件编译的方法: -so文件不需要main文件,即 ...

  4. PHP 文字,图片水印,缩略图,裁切成小图(大小变小)

    文字水印基本思路:1.用getimagesize()获取图片的信息(as:大小,属性等):2.根据图片信息用imagecreatefromjpeg ()/imagecreatefromgif/imag ...

  5. C# 拷贝数组的几种方式

    突然学到了,所以就放到博客上来共享一下,权当是学习日记吧. 首先说明一下,数组是引用类型的,所以注意不要在复制时复制了地址而没有复制数值哦! 其实在复制数组的时候,一定要用new在堆中开辟一块新的空间 ...

  6. Dev表格导出工具类 z

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace xSof ...

  7. Java笔记1 : 在生产者消费者模式中,线程通信与共享数据,死锁问题与解决办法

    本例定义了4个类,这里说一下,方便下面讲解.分别是Product(产品),Producer(生产者),Consumer(消费者), Test(测试类). 多线程之间通信与共享数据只要引用同一内存区域就 ...

  8. sqrt和Hailstone

    求平方根 class SqRoot{ void calcRoot(double z){ double x=1;double y=z/x; while(Math.abs(x-y)>1E-10) { ...

  9. Hbase热点问题

    需求描述:扫描(查询)某个区间--->列用hbase多节点的资源,分布式扫描,加快速度==> 然后拼接到一起 如何打散数据 冠字号逆序,hash 并不一定数据连续就会造成热点,这个是由数据 ...

  10. 修改 Analysis Service 服务器模式

    原网址:http://cathydumas.com/2012/04/23/changing-an-analysis-services-instance-to-tabular-mode/ Say you ...