题目链接
bfs题目,不多说
import java.util.*;
import java.math.*;
public class Main {
public static int[] dx={1,-1,0,0},dy={0,0,-1,1};
public static int mx=0,my=0,jx=0,jy=0;
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
sc.nextLine();
char[][] map=new char[n][m];
for(int i=0;i<n;i++){
String s=sc.nextLine();
map[i]=s.toCharArray();
for(int j=0;j<m;j++){
if(map[i][j]=='m'){
mx=i;my=j;
}
if(map[i][j]=='d'){
jx=i;jy=j;
}
}
}
int res=bfs(map);
System.out.println(res==-1?"No Way!":res);
}
public static int bfs(char[][] map){
int n=map.length;
int m=map[0].length;
Queue<int[]> q=new LinkedList<int[]>();
q.offer(new int[]{mx,my});
int step=0;
map[mx][my]='#';
map[jx][jy]='.';
while(!q.isEmpty()){
int len=q.size();
for(int i=0;i<len;i++){
int[] cur=q.poll();
int x=cur[0];
int y=cur[1];
if(x==jx&&y==jy)
return step;
for(int j=0;j<4;j++){
int xx=x+dx[j];
int yy=y+dy[j];
if(xx<0||yy<0||xx==n||yy==m||map[xx][yy]!='.')
continue;
map[xx][yy]='#';
q.offer(new int[]{xx,yy});
}
}
step++;
}
return -1;
}
}