//????? private void Solve() { H = ReadInt; W = ReadInt; gx = W - 1; gy = H - 1; maze = new bool[H][]; dist = new int[W][]; for (int i = 0; i < W; i++) { dist[i] = new int[H]; for (int j = 0; j < H; j++) { dist[i][j] = INF; } } for (int i = 0; i < H; i++) { maze[i] = ReadStr.Select(x => x == '.').ToArray(); } var white_count = maze.SelectMany(x => x).Count(x => x); bfs(); if (dist[gx][gy] == INF) { Console.WriteLine(-1); return; } Console.WriteLine(white_count - dist[gx][gy] - 1); }
//????? private void Solve() { c = new bool[H][]; for (int i = 0; i < H; i++) { c[i] = ReadStr.Select(x => x == 'o').ToArray(); } for (int y = 0; y < 10; y++) { for (int x = 0; x < 10; x++) { visited = new bool[H][]; for (int i = 0; i < H; i++) { visited[i] = new bool[W]; } if (!c[y][x]) { c[y][x] = true; dfs(x, y); ans = true; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (visited[i][j] != c[i][j]) { ans = false; break; } } if (!ans) { break; } } c[y][x] = false; } if (ans) { Console.WriteLine("YES"); return; } } } Console.WriteLine("NO"); }
//????? private void Solve() { R = ReadInt; C = ReadInt; sy = ReadInt - 1; sx = ReadInt - 1; gy = ReadInt - 1; gx = ReadInt - 1; maze = new bool[R][]; dist = new int[R][]; for (int i = 0; i < R; i++) { maze[i] = ReadStr.Select(x => x == '.').ToArray(); dist[i] = new int[C]; for (int j = 0; j < C; j++) { dist[i][j] = INF; } } Console.WriteLine(bfs()); }