zoukankan      html  css  js  c++  java
  • HDU

    *:使用

    Sample Input
    4 4
    Y.#@
    ....
    .#..
    @..M
    4 4
    Y.#@
    ....
    .#..
    @#.M
    5 5
    Y..@.
    .#...
    .#...
    @..M.
    #...#
    Sample Output
    66
    88
    66

    **************************************************

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<queue>
     6 #include<stdlib.h>
     7 #include<map>
     8 #include<cmath>
     9 
    10 using namespace std;
    11 
    12 #define N 350
    13 #define INF 0x3f3f3f3f
    14 
    15 struct node
    16 {
    17     int x,y,step;
    18 };
    19 
    20 int w[4][2]= { {0,1},{0,-1},{1,0},{-1,0} };
    21 int n,m,vis[N][N], v[N][N];
    22 char str[N][N];
    23 
    24 void bfs(node s)
    25 {
    26     int i;
    27 
    28     queue<node>Q;
    29     node q;
    30     s.step=0;
    31     Q.push(s);
    32     vis[s.x][s.y]=1;
    33 
    34     while(Q.size())
    35     {
    36         q=Q.front();
    37         Q.pop();
    38 
    39         if(str[q.x][q.y]=='@')
    40             v[q.x][q.y]+=q.step;
    41 
    42         for(i=0; i<4; i++)
    43         {
    44             s.x=q.x+w[i][0];
    45             s.y=q.y+w[i][1];
    46             if(s.x>=0&&s.x<n&&s.y>=0&&s.y<m&&vis[s.x][s.y]==0&&str[s.x][s.y] != '#')
    47             {
    48                 vis[s.x][s.y]=1;
    49                 s.step=q.step+1;
    50                 Q.push(s);
    51             }
    52         }
    53     }
    54 }
    55 
    56 int main()
    57 {
    58     int i,j;
    59     node s1,s2;
    60 
    61     while(scanf("%d %d", &n,&m) != EOF)
    62     {
    63         memset(v,0,sizeof(v));
    64         memset(vis,0,sizeof(vis));
    65         memset(str,0,sizeof(str));
    66 
    67         for(i=0; i<n; i++)
    68         {
    69             scanf("%s", str[i]);
    70             for(j=0; j<m; j++)
    71             {
    72                 if(str[i][j]=='Y')
    73                     s1.x=i,s1.y=j;
    74                 if(str[i][j]=='M')
    75                     s2.x=i,s2.y=j;
    76             }
    77         }
    78 
    79         bfs(s1);
    80         memset(vis,0,sizeof(vis));
    81         bfs(s2);
    82 
    83 
    84         int ans=INF;
    85         for(i=0; i<n; i++)
    86             for(j=0; j<m; j++)
    87                 if(v[i][j] != 0)
    88                     ans=min(ans,v[i][j]);
    89 
    90         printf("%d
    ", ans*11);
    91     }
    92     return 0;
    93 }
  • 相关阅读:
    Java 7如何操纵文件属性
    MS Server中varchar与nvarchar的区别
    【Unity3D】【NGUI】UICamera
    2007LA 3902 网络(树+贪心)
    读取图片的几种方式
    AssetsLibrary 实现访问相册,选取多张照片显示
    UIImagePickerController的用法
    画板的实现
    最近的状态
    富文本的使用-----实现图文混排 文字的检索 (正则表达式)
  • 原文地址:https://www.cnblogs.com/weiyuan/p/5687128.html
Copyright © 2011-2022 走看看