• myj的尘歌壶


    Time Limit: 1000 MSMemory Limit: 262144 K
    Total Submit: 380(54 users)Total Accepted: 76(42 users)Rating: Special Judge: No
    Description

    最近myj沉迷原神无法自拔,在原神的游戏系统中,有一个叫做尘歌壶的家园系统,你可以在里面放置各种物品

    但是myj是一个急功近利的人,为了白嫖到奖励,不惜一切代价,而这一行为导致他的尘歌壶里面一片混乱

    某一天,他在正常游戏的时候,发现自己在尘歌壶里面迷路了,而他发现他的尘歌壶可以转化为一个n*m的简单二维图,其中1表示障碍物,0表示空地。若你位于一格0上,那么你可以移动到相邻4格中的任意一格0上

    现在myj给你他所在的位置,和他想去的位置,你能帮他找找是否存在一条路径使他在混乱的尘歌壶中走到目标位置吗?

    Input

    第一行一个数字T,表示有T组测试数据

    对于每一组数据: 第一行包含两个整数n,m,表示myj给你的地图大小有n行m列

    接下来有n行由01构成的字符串,每行字符串有m个字符,若当前字符为1,表示不可以通过。0表示可以正常通过

    最后一行包含四个整数sx,sy,ex,ey,分别表示myj现在所在的点坐标,和终点的点坐标

    n,m≤500,T≤10,数据保证起点和终点不是障碍物,且对于所有数据而言,n*m的总和不大于1e7

    Output

    如果myj能够顺利到达,输出YE5

    否者输出N0

    Sample Input

    3 3
    001
    100
    110
    1 1 3 3
    Sample Output
    YE5
    Hint

    输出建议直接复制题目

    每输出一行都应该有一个换行符

    行末没有多余空格

    迷宫左上角坐标为(1,1),右下角为(n,m)

    提示:可以参考马老师讲过的走迷宫代码,注意复杂度!

    Source
    20211016
    Author
    马英杰
    1. #include <iostream>
    2. #include <queue>
    3. #include <cstring>
    4. #include <algorithm>
    5. using namespace std;
    6. constexpr int N=505;
    7. char s[N][N];
    8. int z,n,m,sx,sy,ex,ey;
    9. bool vis[N][N];
    10. int dx[4]={0,1,-1,0},dy[4]={1,0,0,-1};
    11. void bfs(int x,int y){
    12. queue<pair<int,int>>q;
    13. q.push(make_pair(x,y));
    14. while(!q.empty()){
    15. auto t=q.front();
    16. q.pop();
    17. if(t.first==ex&&t.second==ey){
    18. printf("YE5\n");
    19. return;
    20. }
    21. for(int i=0;i<4;i++){
    22. int xx=t.first+dx[i],yy=t.second+dy[i];
    23. if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&vis[xx][yy]==0&&s[xx][yy]=='0'){
    24. vis[xx][yy]= true;
    25. q.push(make_pair(xx,yy));
    26. }
    27. }
    28. }
    29. printf("N0\n");
    30. return;
    31. }
    32. int main() {
    33. scanf("%d", &z);
    34. while (z--) {
    35. scanf("%d%d", &n, &m);
    36. for (int i = 1; i <= n; i++) {
    37. for (int j = 1; j <= m; j++) {
    38. cin>>s[i][j];
    39. }
    40. }
    41. scanf("%d%d%d%d", &sx, &sy, &ex, &ey);
    42. s[sx][sy]= true;
    43. bfs(sx, sy);
    44. memset(s,0,sizeof(s));
    45. memset(vis, false,sizeof(vis));
    46. }
    47. }

     

  • 相关阅读:
    全球化浪潮下的技术与安全
    基于JAVA,SpringBoot,Vue,UniAPP智能停车场小程序管理系统设计
    【技术分享】计算机视觉常见的十种图像标注方法
    芯片SoC设计你了解吗?
    zookeeper集群
    Python3《机器学习实战》学习笔记(五):Logistic回归基础篇之梯度上升算法
    为游戏开发行业释放 Git
    “蔚来杯“2022牛客暑期多校训练营2
    叶工好容6-自定义与扩展
    【软考】系统集成项目管理工程师(九)项目成本管理【4分】
  • 原文地址:https://blog.csdn.net/q619718/article/details/127717070