zoukankan      html  css  js  c++  java
  • hdu 1175

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

    一道bfs的水题吧,挺恶心的,YES,NO的大小写我没注意,然后WA

    这个题吧好像有个BUG就是说这两个点有可能是在一起的,数据问题

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <queue>
     4 #define jud(Node) Node.x>0&&Node.x<m+1&&Node.y>0&&Node.y<n+1
     5 using namespace std;
     6 
     7 struct Node{
     8     int x,y;
     9     int step;
    10 };
    11 queue<Node>s;
    12 int graph[1005][1005];
    13 int m,n,t;
    14 int a,b,c,d;
    15 int mark[1005][1005];
    16 int dic[4][2] = {0,1,1,0,0,-1,-1,0};
    17 
    18 void bfs()
    19 {
    20     memset(mark,true,sizeof(mark));
    21     Node tmp,tmp1;
    22     tmp.x = a;
    23     tmp.y = b;
    24     tmp.step = -1;
    25     mark[tmp.x][tmp.y] = false;
    26     while(!s.empty())
    27         s.pop();
    28     s.push(tmp);
    29     while(!s.empty())
    30     {
    31         tmp = s.front();
    32         s.pop();
    33         if(tmp.x==c&&tmp.y==d&&tmp.step<=2)
    34         {
    35             printf("YES
    ");
    36             return;
    37         }
    38         for(int i = 0; i<4; i++)
    39         {
    40             tmp1.x = tmp.x + dic[i][0];
    41             tmp1.y = tmp.y + dic[i][1];
    42             while(((graph[tmp1.x][tmp1.y]==0)||(tmp1.x==c&&tmp1.y==d))&&jud(tmp1)&&tmp.step<2)
    43             {
    44                 if(mark[tmp1.x][tmp1.y])
    45                 {
    46                     tmp1.step = tmp.step+1;
    47                     mark[tmp1.x][tmp1.y] = false;
    48                     s.push(tmp1);
    49                    // printf("%d %d %d %d
    ",tmp.x,tmp.y,tmp1.x,tmp1.y);
    50                 }
    51                 Node tmp2;
    52                 tmp2.x = tmp1.x+dic[i][0];
    53                 tmp2.y = tmp1.y+dic[i][1];
    54                 tmp1 = tmp2;
    55             }
    56         }
    57     }
    58     printf("NO
    ");
    59 }
    60 
    61 int main()
    62 {
    63 
    64     while(scanf("%d%d",&m,&n),m||n)
    65     {
    66         memset(graph,0,sizeof(graph));
    67         for(int i = 1;i<=m;i++)
    68             for(int j = 1;j<=n;j++)
    69                 scanf("%d",&graph[i][j]);
    70         scanf("%d",&t);
    71         while(t--)
    72         {
    73             scanf("%d%d%d%d",&a,&b,&c,&d);
    74             if(graph[a][b]==0||graph[c][d]==0)
    75                 printf("NO
    ");
    76             else if(graph[a][b]!=graph[c][d])
    77                 printf("NO
    ");
    78             else if(a==c&&b==d)
    79                 printf("NO
    ");
    80             else bfs();
    81         }
    82     }
    83     return 0;
    84 }
  • 相关阅读:
    排序算法——快速排序
    ArrayDeque源码解析
    PriorityQueue源码解析
    HashMap源码解析
    LinkedList源码解析
    ArrayList源码解析
    获取Spring容器管理的Bean工具类
    使用Google zxing生成二维码
    解决:SpringCloud中Feign支持GET请求POJO传参
    MySQL8.0 Unable to load authentication plugin 'caching_sha2_password'
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/6653527.html
Copyright © 2011-2022 走看看