1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int m,n; char a[155][155]; struct Node{ int x,y,s; }; int sx,sy,tx,ty; bool vis[155][155]; int dx[8]={-2,-2,2,2,-1,-1,1,1}; int dy[8]={-1,1,-1,1,-2,2,-2,2}; int bfs(int x,int y){ queue que; Node t={x,y,0}; que.push(t); vis[x][y]=1; while(!que.empty()){ int x=que.front().x; int y=que.front().y; int s=que.front().s; que.pop(); if(xtx&&yty){return s;} for(int i=0;i<8;i++){ int nx=dx[i]+x; int ny=dy[i]+y; if(a[nx][ny]'*') continue; if(vis[nx][ny]) continue; if(nx<1||nx>n||ny<1||ny>m) continue; vis[nx][ny]=1; Node t={nx,ny,s+1}; que.push(t); } } return -1; } int main(){ cin>>m>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]'K'){ sx=i; sy=j; } if(a[i][j]=='H'){ tx=i; ty=j; } } } cout<<bfs(sx,sy); return 0; }
信息
- ID
- 506
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 37
- 已通过
- 15
- 上传者