zoukankan      html  css  js  c++  java
  • 【HDOJ】2645 find the nearest station

    裸BFS。

     1 /* 2645 */
     2 #include <iostream>
     3 #include <queue>
     4 #include <cstdio>
     5 #include <cstring>
     6 #include <cstdlib>
     7 using namespace std;
     8 
     9 #define MAXN 200
    10 
    11 typedef struct node_t {
    12     int x, y;
    13     node_t() {}
    14     node_t(int xx, int yy) {
    15         x = xx; y = yy;
    16     }
    17 } node_t;
    18 
    19 int n, m;
    20 queue<node_t> Q;
    21 char map[MAXN][MAXN];
    22 int dist[MAXN][MAXN];
    23 int dir[4][2] = {
    24     -1,0,1,0,0,-1,0,1
    25 };
    26 
    27 void bfs() {
    28     int i, j, k;
    29     int x, y;
    30     node_t nd;
    31     
    32     while (!Q.empty()) {
    33         nd = Q.front();
    34         Q.pop();
    35         for (i=0; i<4; ++i) {
    36             x = nd.x + dir[i][0];
    37             y = nd.y + dir[i][1];
    38             if (x<0 || x>=n || y<0 || y>=m || map[x][y]=='1')
    39                 continue;
    40             map[x][y] = '1';
    41             dist[x][y] = dist[nd.x][nd.y] + 1;
    42             Q.push(node_t(x, y));
    43         }
    44     }
    45 }
    46 
    47 int main() {
    48     int i, j, k;
    49     
    50     #ifndef ONLINE_JUDGE
    51         freopen("data.in", "r", stdin);
    52     #endif
    53     
    54     while (scanf("%d %d", &n, &m) != EOF) {
    55         for (i=0; i<n; ++i) {
    56             scanf("%s", map[i]);
    57             for (j=0; j<m; ++j) {
    58                 if (map[i][j] == '1') {
    59                     Q.push(node_t(i, j));
    60                     dist[i][j] = 0;
    61                 }
    62             }
    63         }
    64         bfs();
    65         for (i=0; i<n; ++i) {
    66             printf("%d", dist[i][0]);
    67             for (j=1; j<m; ++j)
    68                 printf(" %d", dist[i][j]);
    69             printf("
    ");
    70         }
    71     }
    72     
    73     return 0;
    74 }
  • 相关阅读:
    Python深拷贝和浅拷贝解析
    python中count函数的用法
    Jenkins + gitlab + maven 自动打包部署项目
    nio和bio得区别
    nginx负载均衡的5种策略
    接口测试常见bug
    接口自动化面试4
    pass 语句
    if 语句
    while循环
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4291887.html
Copyright © 2011-2022 走看看