zzuli 1726【BFS】
来源:互联网 发布:帝国cms 帐号被锁 编辑:程序博客网 时间:2024/06/04 15:23
额。。闲着无聊去打。。然后出事情了。。。
出题人喜欢玩语文姿势。。。
坑在了他开关碰完以后,居然消失的意思是 这个grid变成合法' . ';!!!不可理喻啊!!!
思路:
BFS,8个方向,四个角还要判断一下。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N=1e2+10;int dx[8]={0,0,1,-1,-1,1,1,-1};int dy[8]={-1,1,0,0,-1,1,-1,1};struct Node{ int x,y;}node[15];struct asd{ int x,y; int step;};queue<asd>q;int n,m,k;bool vis[N][N];char ma[N][N];int BFS(int sx,int sy,int ex,int ey){ asd now,nex; memset(vis,false,sizeof(vis)); while(!q.empty()) q.pop(); now.x=sx;now.y=sy; now.step=0; vis[sx][sy]=true; q.push(now); while(!q.empty()){ now=q.front();q.pop(); if(now.x==ex && now.y==ey) return now.step; for(int i=0;i<8;i++){ int x=now.x+dx[i]; int y=now.y+dy[i]; if(x<0||y<0||x>=n||y>=m||ma[x][y]!='.'||vis[x][y]) continue; if(i>=4 && ma[now.x][now.y+dy[i]]=='#' && ma[now.x+dx[i]][now.y]=='#' ) continue; nex.x=x;nex.y=y;nex.step=now.step+1; vis[x][y]=true; q.push(nex); } } return -1;}int main(){ int T; scanf("%d",&T); while(T--){ int sx,sy,ex,ey; scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++) scanf("%s",ma[i]); scanf("%d%d",&sx,&sy); sx--;sy--; bool flag=true; for(int i=0;i<k;i++) { scanf("%d%d",&ex,&ey); ex--;ey--; ma[ex][ey]='*'; if(i>0 && ex==sx &&ey== sy) flag=false; node[i].x=ex;node[i].y=ey; } int ans=0,temp; for(int i=0;i<k;i++){ ex=node[i].x;ey=node[i].y; if(!flag) break; ma[ex][ey]='.'; temp=BFS(sx,sy,ex,ey); if(temp==-1) flag=false; ans+=temp; sx=ex;sy=ey; } if(!flag) ans=-1; printf("%d\n",ans); } return 0;}
0 0
- zzuli 1726【BFS】
- zzuli 1726: 迷宫(bfs)@
- zzuli 1787: 生化危机 (BFS)
- ZZULI-1905 小火山的围棋梦想 【BFS or DFS】
- zzuli 2130 hipercijevi bfs + 链式前向星 + 输入外挂
- zzuli 2130: hipercijevi bfs+输入输出外挂 (2017轻工业校赛 )
- zzuli 1908: 小火山的围棋梦想(bfs加队列)
- zzuli 1530
- zzuli 1731
- zzuli 1895
- zzuli 1904
- zzuli D
- zzuli-1919
- zzuli 1921
- zzuli 1922
- zzuli 1919
- zzuli 1895
- zzuli 1916
- OpenCV 学习(直线拟合)
- prim算法 最小生成树
- C/C++中各类型数据所占字节数
- 算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
- SAN技术及应用
- zzuli 1726【BFS】
- MySQL5.7更改密码
- 获取浏览器高度和宽度
- 安卓Android短信验证功能实现
- python 中的静态方法、类方法、类变量和实例变量
- dp编程题
- HTML5学习之新增事件处理
- JAVABEAN是什么和总结JAVABEAN的两种使用方式
- 速攻蓝牙NRF52832系列教程之方法篇(一)