zoukankan      html  css  js  c++  java
  • Find a way--hdu2612

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=2612

    广搜题

    注意:可能存在一个@两人都不能达到;

    3 3

    Y#@

    .M#

    @..

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<stdlib.h>
     7 #define inf 0x6ffffff
     8 using namespace std;
     9 
    10 #define min(a,b) (a>b?b:a)
    11  
    12 #define N 205
    13 
    14 int vis[N][N],m,n,b[N][N],dir[4][2]={ {1,0},{-1,0},{0,1},{0,-1} };
    15 char maps[N][N];
    16 
    17 struct node 
    18 {
    19     int x,y,step;
    20 };
    21 
    22 void bfs(node s)
    23 {
    24     queue<node> Q;
    25     node q;
    26     s.step=0;
    27     Q.push(s);
    28     vis[s.x][s.y]=1;
    29 
    30     while(Q.size())
    31     {
    32         q=Q.front();
    33         Q.pop();
    34         if(maps[q.x][q.y]=='@')
    35         {
    36             b[q.x][q.y]+=q.step;
    37         }
    38         for(int i=0;i<4;i++)
    39         {
    40             s.x=q.x+dir[i][0];
    41             s.y=q.y+dir[i][1];
    42             if(s.x>=0&&s.x<n&&s.y>=0&&s.y<m&&vis[s.x][s.y]==0&&maps[s.x][s.y]!='#')
    43             {
    44                 vis[s.x][s.y]=1;
    45                 s.step=q.step+1;
    46                 Q.push(s);
    47             }
    48         }
    49     }
    50 }
    51 
    52 int main()
    53 {
    54     int i,j;
    55     node s1,s2;
    56     while(scanf("%d%d",&n,&m)!=EOF)
    57     {
    58         memset(maps,0,sizeof(maps));
    59         memset(b,0,sizeof(b));
    60         memset(vis,0,sizeof(vis));
    61 
    62         for(i=0;i<n;i++)
    63         {
    64             for(j=0;j<m;j++)
    65             {
    66                 cin>>maps[i][j];
    67                 if(maps[i][j]=='Y')
    68                 {
    69                     s1.x=i;s1.y=j;
    70                 }
    71                 if(maps[i][j]=='M')
    72                 {
    73                     s2.x=i;s2.y=j;
    74                 }
    75             }
    76         }
    77 
    78         bfs(s1);
    79         memset(vis,0,sizeof(vis));
    80         bfs(s2);
    81         int Min=inf;
    82         for(i=0;i<n;i++)
    83         {
    84             for(j=0;j<m;j++)
    85             {
    86                 if(b[i][j]!=0)//不能写成if(maps[i][j]=='@',原因在上面)
    87                 {
    88                     Min=min(Min,b[i][j]);
    89                 }
    90             }
    91         }
    92         printf("%d
    ",Min*11);
    93     }
    94     return 0;
    95 }
  • 相关阅读:
    Linq To Sql 练习
    伪静态在webconfig中配置
    log4net.dll配置以及在项目中应用
    C#Windows服务安装
    .net平台推送ios消息
    asp.net下js调用session
    MAC地址泛洪攻击测试
    wifipineapple使用教程
    python程序的调试方法
    python import的用法
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/4425270.html
Copyright © 2011-2022 走看看