当前位置: 首页 > news >正文

网站建设求职综合商城网站程序

网站建设求职,综合商城网站程序,源码出售网站怎么做,天津 网站制作Problem F. 幻形之路 给定一个 n m nm nm 的迷宫,每个格子为 . (空地)或 #(障碍)。你从左上角 ( 1 , 1 ) (1,1) (1,1) 出发,目标是到达右下角 ( n , m ) (n,m) (n,m) ,每步可以向上、下、左…

Problem F. 幻形之路

给定一个 n × m n×m n×m 的迷宫,每个格子为 . (空地)或 #(障碍)。你从左上角 ( 1 , 1 ) (1,1) (1,1) 出发,目标是到达右下角 ( n , m ) (n,m) (n,m) ,每步可以向上、下、左、右移动一格,不能移动到迷宫外部,也不能移动到障碍格子上。
你可以选择 至多一次 服用一种药剂,在服药后的连续 k ( k ≥ 0 ) k(k ≥0) kk0步中,你可以将障碍视为可以通行的空地。
请你计算从起点到终点可达的前提下,所需的最小 k k k 值是多少。

输入格式

本题包含多组测试数据
第一行一个正整数 T ( 1 ≤ T ≤ 2.5 × 105 ) T(1≤T ≤2.5×105) T1T2.5×105 ,表示测试数据的组数。
对于每组数据:
第一行两个正整数 n , m ( 2 ≤ n , m ≤ 1000 ) n,m(2≤n,m≤1000) n,m2n,m1000 ,表示迷宫的大小。
接下来一个 n × m n×m n×m 的矩阵,表示迷宫。保证起点和终点不为障碍
保证所有数据的 ∑ n m ≤ 10 6 ∑nm≤10^6 nm106

输出格式

对于每组数据,输出一行,表示k的最小值。

样例输入
2
3 4
..##
###.
.##.
3 2
..
##
..
样例输出
2
1
import java.io.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;public class Main {static final int[] dx = {-1, 1, 0, 0};static final int[] dy = {0, 0, -1, 1};// Function to perform BFS and mark reachable pointsstatic void bfs(String[] grid, int[][] dist, boolean[][] reachable, int start_i, int start_j) {int n = grid.length;int m = grid[0].length();Queue<int[]> q = new LinkedList<>();q.add(new int[]{start_i, start_j});reachable[start_i][start_j] = true;while (!q.isEmpty()) {int[] current = q.poll();int i = current[0];int j = current[1];for (int d = 0; d < 4; ++d) {int ni = i + dx[d];int nj = j + dy[d];if (ni >= 0 && ni < n && nj >= 0 && nj < m && grid[ni].charAt(nj) == '.' && !reachable[ni][nj]) {reachable[ni][nj] = true;q.add(new int[]{ni, nj});}}}for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (reachable[i][j]) {dist[i][j] = 0;q.add(new int[]{i, j});}}}while (!q.isEmpty()) {int[] current = q.poll();int i = current[0];int j = current[1];for (int d = 0; d < 4; ++d) {int ni = i + dx[d];int nj = j + dy[d];if (ni >= 0 && ni < n && nj >= 0 && nj < m && dist[ni][nj] > dist[i][j] + 1) {dist[ni][nj] = dist[i][j] + 1;q.add(new int[]{ni, nj});}}}}public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int T = Integer.parseInt(bf.readLine());while (T-- > 0) {String[] str = bf.readLine().split(" ");int n = Integer.parseInt(str[0]);int m = Integer.parseInt(str[1]);String[] grid = new String[n];for (int i = 0; i < n; ++i) {grid[i] = bf.readLine();}// Step 1: Find start_reachable and end_reachable pointsboolean[][] startReachable = new boolean[n][m];boolean[][] endReachable = new boolean[n][m];int[][] distStart = new int[n][m];int[][] distEnd = new int[n][m];for (int i = 0; i < n; ++i) {Arrays.fill(distStart[i], Integer.MAX_VALUE);Arrays.fill(distEnd[i], Integer.MAX_VALUE);}// Step 2: Multi-source BFS for start and end reachable pointsbfs(grid, distEnd, startReachable, 0, 0);bfs(grid, distStart, endReachable, n - 1, m - 1);// Step 3: Calculate the answerint answer = Integer.MAX_VALUE;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (distStart[i][j] != -1 && distEnd[i][j] != -1) {answer = Math.min(answer, distStart[i][j] + distEnd[i][j] - 1);}}}bw.write(Math.max(answer, 0) + "\n");bw.flush();}bw.close();}
}
http://www.yayakq.cn/news/685866/

相关文章:

  • 东莞一站式网站推广运营网站设计顺德
  • 访问外国网站很慢wordpress注册老是显示404
  • 中国电力建设集团网站js网站繁体
  • 电商网站设计素材怎么做百度里面自己的网站
  • 天津实用网站建设平台中国建筑有限公司官网
  • 宁化网站建设vs2017网站开发选择调试服务
  • 阜宁做网站公司绍兴公司网站建设 中企动力绍兴
  • 寻找网站建设 网站外包代运营电商公司
  • 阳江企业网站排名优化西安有几个区
  • 企业网站建设的要素抓取网站后台密码
  • 承德房地产网站建设wordpress缓存插件比拼
  • 客户端 网站开发 手机软件开发摄影网站采用照片做宣传_版权费是多少?
  • 网站产品后台界面怎么做网站开发英文文献
  • 视频素材网站怎么建免费做网站刮刮卡
  • 乐清 网站建设如何制作网站页面
  • 给公司做网站的公司网页版梦幻西游vip价格表
  • 巴青网站制作网上能免费做网站发布叼
  • 先做网站先备案快速知彼网络网站建设
  • 网站统计 中文域名网站页脚的制作
  • 网站建设维护宣传优秀网站建设模版
  • 沈阳做网站的企业庄河建网站
  • wordpress 多语言网站南水北调建设管理局网站
  • 网站建设 杭州市萧山区黄骅港
  • 织梦系统如何做网站地图网站返回顶部代码
  • 商城网站建设可以吗山东丽天建设集团网站
  • 绵阳汽车网站制作教育网站制作一般多少钱
  • 戈韦思网站建设易居房产cms
  • 西安网站设计报价女生seo专员很难吗为什么
  • 湘潭学校网站建设 磐石网络专注建设工程交易中心网
  • 做网站一般用什么框架做导购网站赚钱吗