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


    题目

    2252: [2010Beijing wc]矩阵距离

    Time Limit: 10 Sec  Memory Limit: 256 MB

    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

    题解

    好吧,就是一个宽搜,而且根据宽搜的性质,所以每个点只需要经过一次就足够了。

    代码

     1 /*Author:WNJXYK*/
     2 #include<cstdio>
     3 #include<queue>
     4 using namespace std;
     5 
     6 int dist[1005][1005];
     7 
     8 int n,m;
     9 int dx[]={0,1,0,-1,0};
    10 int dy[]={0,0,1,0,-1};
    11 inline char read(){
    12     char x;
    13     x=getchar();
    14     while(x!='1' && x!='0') x=getchar();
    15     return x;
    16 }
    17 struct xy{
    18     int x,y;
    19     xy(){}
    20     xy(int a,int b){
    21         x=a;y=b;
    22     }
    23 };
    24 queue<xy> que;
    25 
    26 inline void bfs(){
    27     
    28     while(!que.empty()){
    29         int x=que.front().x,y=que.front().y;
    30         que.pop();
    31         for (int k=1;k<=4;k++){
    32             int nx=x+dx[k],ny=y+dy[k];
    33             if (nx<1 || nx>n || ny<1 || ny>m || dist[nx][ny]!=-1) continue;
    34             dist[nx][ny]=dist[x][y]+1;
    35             que.push(xy(nx,ny));
    36         }    
    37     }
    38     
    39 } 
    40 int main(){
    41     scanf("%d%d",&n,&m);
    42     for (int i=1;i<=n;i++){
    43         for (int j=1;j<=m;j++){
    44             if (read()=='0') dist[i][j]=-1; else {dist[i][j]=0;que.push(xy(i,j));}
    45         }
    46     }
    47     bfs();
    48     for (int i=1;i<=n;i++){
    49         for (int j=1;j<=m;j++){
    50             printf("%d ",dist[i][j]);
    51         } 
    52         printf("
    ");
    53     }
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    hdu 母牛的故事 递推题
    并查集
    又是矩阵 Uva上的一道 经典题目
    poj 3233 矩阵幂取模
    electronvue + elementui构建桌面应用
    主板cmos 映射表
    高级配置与电源接口 acpi 简介
    警告不能读取 AppletViewer 属性文件的解决方法
    高级 Synth(转载)
    vbs 查看硬件信息代码
  • 原文地址:https://www.cnblogs.com/WNJXYK/p/4161753.html
Copyright © 2020-2023  润新知