import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static int n, m; public static String ans = "No"; public static void main(String[] args) { Scanner in = new Scanner(System.in); n = in.nextInt(); m = in.nextInt(); String sa = in.nextLine(); String[] strs = new String[n]; int index = 0; char[][] chars = new char[n][m]; // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case strs[index] = in.nextLine(); chars[index] = strs[index].toCharArray(); index++; } dfs(chars); System.out.println(ans); } public static void dfs(char[][] graph){ if(graph == null || graph.length == 0){ return; } helper(0,0,graph); } public static void helper(int r, int c, char[][ ] graph){ if(r < 0 || c < 0 || r >= n || c >= m){ return; } // 如果不是空地,直接返回 if(graph[r][c] != '.'){ return; } // 检查是否到达终点 if(r == n - 1 && c == m - 1){ ans = "Yes"; return; } // 标记当前位置为已访问 graph[r][c] = '#'; // 向四个方向递归搜索 helper(r - 1, c, graph); helper(r + 1, c, graph); helper(r, c - 1, graph); helper(r, c + 1, graph); } }