static void Main(string[] args) { int[] rc = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); int[] syx = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); int[] gyx = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); for (int i = 0; i < rc[0]; i++) { List <BlockClass> tmpList = new List <BlockClass>(); Maze.Add(tmpList); string line = Console.ReadLine(); for (int j = 0; j < rc[1]; j++) { BlockClass tmpBlock = new BlockClass(); tmpList.Add(tmpBlock); tmpBlock.x = i; tmpBlock.y = j; if (line[j] == '.') { tmpBlock.isRoad = true; } else { tmpBlock.isRoad = false; } } } Maze[gyx[0] - 1][gyx[1] - 1].isGoal = true; Maze[syx[0] - 1][syx[1] - 1].Min = 0; Queue.Add(Maze[syx[0]][syx[1]]); BFS(syx[0] - 1, syx[1] - 1); // }
static void Main(string[] args) { int[] hw = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); List <BlockClass> list0 = new List <BlockClass>(); Maze.Add(list0); for (int i = 0; i < hw[1] + 2; i++) { BlockClass tmpBlock = new BlockClass(); list0.Add(tmpBlock); tmpBlock.x = 0; tmpBlock.y = i; tmpBlock.isRoad = false; } for (int i = 1; i <= hw[0]; i++) { List <BlockClass> tmpList = new List <BlockClass>(); Maze.Add(tmpList); string line = Console.ReadLine(); line = "#" + line + "#"; for (int j = 0; j <= hw[1] + 1; j++) { BlockClass tmpBlock = new BlockClass(); tmpList.Add(tmpBlock); tmpBlock.x = i; tmpBlock.y = j; if (line[j] == '.') { tmpBlock.isRoad = true; counter++; } else { tmpBlock.isRoad = false; } } } List <BlockClass> listlist = new List <BlockClass>(); Maze.Add(listlist); for (int i = 0; i < hw[1] + 2; i++) { BlockClass tmpBlock = new BlockClass(); listlist.Add(tmpBlock); tmpBlock.x = hw[0] + 1; tmpBlock.y = i; tmpBlock.isRoad = false; } Maze[hw[0]][hw[1]].isGoal = true; Maze[1][1].Min = 0; Queue.Add(Maze[1][1]); BFS(1, 1); if (Maze[hw[0]][hw[1]].Min == -1) { Console.WriteLine(-1); } else { Console.WriteLine(counter - Maze[hw[0]][hw[1]].Min - 1); } // }