zoukankan      html  css  js  c++  java
  • 日常训练17-10-25

    CF877

    链接

    D. Olya and Energy Drinks

    bfs

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int maxn =1010;
     4 
     5 char mp[maxn][maxn];
     6 int vis[maxn][maxn], dis[maxn][maxn];
     7 
     8 struct Node{
     9     int x, y;
    10     Node(int x = 0, int y = 0) : x(x), y(y) {}
    11 };
    12 
    13 int d[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};
    14 int sx, sy, ex, ey;
    15 int n, m, k;
    16 
    17 void bfs(){
    18     Node p1, p2;
    19     queue<Node> q;
    20     q.push(Node(sx, sy));
    21     vis[sx][sy] = (1<<4) - 1;
    22     dis[sx][sy] = 0;
    23     while(!q.empty()){
    24         p2 = q.front();
    25         q.pop();
    26         if(p2.x == ex && p2.y == ey) return ;
    27         for(int i = 0; i < 4; i++){
    28             for(int j = 1; j <= k; j++){
    29                 int dx = p2.x + d[i][0] * j;
    30                 int dy = p2.y + d[i][1] * j;
    31                 if(dx < 0 || dx >= n || dy < 0 || dy >= m || mp[dx][dy] == '#') break;
    32                 if(vis[dx][dy] & (1<<i)) break;
    33                 int ok = 0;
    34                 if(!vis[dx][dy]) ok = 1;
    35                 vis[dx][dy] |= (1<<i);
    36                 if(ok){
    37                     dis[dx][dy] = dis[p2.x][p2.y] + 1;
    38                     q.push(Node(dx, dy));
    39                 }
    40             
    41             }
    42             
    43         }
    44     }
    45     
    46 }
    47 
    48 int main(){
    49     //freopen("in.txt", "r", stdin);
    50     memset(dis, -1, sizeof(dis));
    51     memset(vis, 0, sizeof(vis));
    52     scanf("%d %d %d", &n, &m, &k);
    53     for(int i = 0; i < n; i++) scanf("%s", mp[i]);
    54     scanf("%d %d %d %d", &sx, &sy, &ex, &ey);
    55     sx--; sy--; ex--; ey--;
    56     bfs();
    57     printf("%d
    ", dis[ex][ey]);
    58 }
    View Code
  • 相关阅读:
    nodejs install
    taobao sass
    Cors 跨域访问API
    多文件上传
    Next
    实用小工具
    下载包含src,tgz,zip的文件
    HTML5文件API
    Bootstrap (导航、标签、面包屑导航)
    Bootstrap 固定定位(Affix)
  • 原文地址:https://www.cnblogs.com/yijiull/p/7731280.html
Copyright © 2011-2022 走看看