zoukankan      html  css  js  c++  java
  • N

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #include<queue>
     5 using namespace std;
     6 int mark[205][205];
     7 char map[205][205];
     8 int fx[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
     9 int num[205][205],num1[205][205],num2[205][205];
    10 struct node
    11 {
    12     int x,y;
    13 }last,now;
    14 int n,m;
    15 queue<node>q;
    16 void bfs(int a,int b)
    17 {
    18     while(!q.empty())
    19     q.pop();
    20     last.x=a;last.y=b;
    21     q.push(last);
    22     while(!q.empty())
    23     {
    24         last=q.front();
    25         q.pop();
    26         for(int i=0;i<4;i++)
    27         {
    28             now.x=last.x+fx[i][0];
    29             now.y=last.y+fx[i][1];
    30             if(now.x>=0&&now.x<=n&&now.y>=0&&now.y<=m&&mark[now.x][now.y]==0&&map[now.x][now.y]!='#')
    31             {
    32                 q.push(now);
    33                 mark[now.x][now.y]=1;
    34                 num[now.x][now.y]=num[last.x][last.y]+1;
    35             }
    36         }
    37     }
    38 }
    39 int main()
    40 {
    41     while(~scanf("%d %d",&n,&m))
    42     {
    43         int i,j,a,b,c,d;
    44         for(i=0;i<n;i++)
    45         scanf("%s",&map[i]);
    46         for(i=0;i<n;i++)
    47         {
    48             for(j=0;j<m;j++)
    49             {
    50                 if(map[i][j]=='Y')
    51                 {
    52                     a=i;b=j;
    53                 }
    54                 if(map[i][j]=='M')
    55                 {
    56                     c=i;d=j;
    57                 }
    58             }
    59         }
    60         memset(mark,0,sizeof(mark));
    61         memset(num,0,sizeof(num));
    62         memset(num1,0,sizeof(num1));
    63         bfs(a,b);
    64         for(i=0;i<n;i++)
    65         {
    66             for(j=0;j<m;j++)
    67             {
    68                 num1[i][j]=num[i][j];
    69             }
    70         }
    71         memset(num,0,sizeof(num));
    72         memset(mark,0,sizeof(mark));
    73         memset(num2,0,sizeof(num2));
    74         bfs(c,d);
    75         for(i=0;i<n;i++)
    76         {
    77             for(j=0;j<m;j++)
    78             {
    79                 num2[i][j]=num[i][j];
    80             }
    81         }
    82         memset(num,0,sizeof(num));
    83         memset(mark,0,sizeof(mark));
    84         int min=10000000;
    85         for(i=0;i<n;i++)
    86         {
    87             for(j=0;j<m;j++)
    88             {
    89                 num[i][j]=num1[i][j]+num2[i][j];
    90                 if(map[i][j]=='@'&&min>num[i][j])
    91                 min=num[i][j];
    92             }
    93         }
    94         printf("%d
    ",min*11);
    95     } 
    96     return 0;
    97 }
  • 相关阅读:
    【读书笔记】Expert Oracle Architecture (by Tom) (2)
    【读书笔记】Introducing ASP.NET
    【读书笔记】Expert Oracle Architecture (by Tom) (1)
    【原创】ASP.NET学习(3)
    【原创】XSL 学习(1)
    【原创】也谈“异步”响应
    【读书笔记】ASP.NET State Management
    基础算法之枚举
    基础算法之排序查找算法
    开放内网(转)
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8971088.html
Copyright © 2011-2022 走看看