题目链接:https://www.nowcoder.com/acm/contest/96/G

思路:两遍bfs,找到p到k的情况,记录时间;找到E到k的情况,记录时间。题目超时点在于输入需要用scanf。如果不用scanf可以用cin加速挂。

AC代码:

  1 #include<iostream>
2 #include<bits/stdc++.h>
3 #include<queue>
4 #define INF 10000000
5 using namespace std;
6 int vis[505][505];
7 int ans[505][505];
8 char a[505][505];
9 int fx[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
10 struct Node{
11 int x,y,step;
12 };
13 void bfs(int x,int y){
14 queue < Node > q;
15 Node now,nxt;
16 now.x=x;
17 now.y=y;
18 now.step=0;
19 q.push(now);
20 vis[x][y]=1;
21 while(!q.empty()){
22 now=q.front();
23 q.pop();
24 if(a[now.x][now.y]=='K'){
25 ans[now.x][now.y]=now.step;
26 }
27 for(int i=0;i<4;i++){
28 int tmpx=now.x+fx[i][0];
29 int tmpy=now.y+fx[i][1];
30 if(!vis[tmpx][tmpy]&&a[tmpx][tmpy]!='#'){
31 nxt.x=tmpx;
32 nxt.y=tmpy;
33 vis[nxt.x][nxt.y]=1;
34 nxt.step=now.step+1;
35 q.push(nxt);
36 }
37 }
38 }
39 return ;
40 }
41 int BFS(int x,int y){
42 queue < Node > q;
43 int mini=INF;
44 Node now,nxt;
45 now.x=x;
46 now.y=y;
47 now.step=0;
48 q.push(now);
49 vis[x][y]=1;
50 while(!q.empty()){
51 now=q.front();
52 q.pop();
53 if(a[now.x][now.y]=='K'&&ans[now.x][now.y]){
54 mini=min(mini,ans[now.x][now.y]+now.step);
55 }
56 for(int i=0;i<4;i++){
57 int tmpx=now.x+fx[i][0];
58 int tmpy=now.y+fx[i][1];
59 if(!vis[tmpx][tmpy]&&a[tmpx][tmpy]!='E'&&a[tmpx][tmpy]!='#'){
60 nxt.x=tmpx;
61 nxt.y=tmpy;
62 nxt.step=now.step+1;
63 q.push(nxt);
64 vis[nxt.x][nxt.y]=1;
65 }
66 }
67 }
68 return mini;
69 }
70 int main(){
71 // ios::sync_with_stdio(false); 加速挂
72 int T;
73 cin>>T;
74 while(T--){
75 int n,m;
76 cin>>n>>m;
77 memset(ans,0,sizeof(ans));
78 for(int i=0;i<504;i++)
79 for(int j=0;j<504;j++)
80 a[i][j]='#';
81 for(int i=1;i<=n;i++){
82 char c=getchar();
83 for(int j=1;j<=m;j++){
84 scanf("%c",&a[i][j]);
85 }
86 }
87 for(int i=1;i<=n;i++){
88 for(int j=1;j<=m;j++){
89 if(a[i][j]=='E'){
90 memset(vis,0,sizeof(vis));
91 bfs(i,j);
92 break;
93 }
94 }
95 }
96 int mini;
97 for(int i=1;i<=n;i++){
98 for(int j=1;j<=m;j++){
99 if(a[i][j]=='P'){
100 memset(vis,0,sizeof(vis));
101 mini=BFS(i,j);
102 break;
103 }
104 }
105 }
106 if(mini==INF){
107 cout<<"No solution"<<endl;
108 }else{
109 cout<<mini<<endl;
110 }
111 }
112 return 0;
113 }

2018年长沙理工大学第十三届程序设计竞赛 G 题:逃离迷宫的更多相关文章

  1. 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】

    链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. H-数学考试 想法题+最新头文件 2018年长沙理工大学第十三届程序设计竞赛

    https://www.nowcoder.com/acm/contest/96/H 坑点:INF开太小了... #define _CRT_SECURE_NO_WARNINGS #include< ...

  3. 2018年长沙理工大学第十三届程序设计竞赛 E小木乃伊到我家(spfa模版)

    链接:https://www.nowcoder.com/acm/contest/96/E来源:牛客网 小木乃伊到我家 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他 ...

  4. 2018年长沙理工大学第十三届程序设计竞赛 J杯子

    链接:https://www.nowcoder.com/acm/contest/96/J来源:牛客网 杯子 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...

  5. 2018年长沙理工大学第十三届程序设计竞赛 H数学考试

    链接:https://www.nowcoder.com/acm/contest/96/H来源:牛客网 数学考试 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  6. 2018年长沙理工大学第十三届程序设计竞赛 Dzzq的离散数学教室1

    Dzzq的离散数学教室1 链接:https://www.nowcoder.com/acm/contest/96/D来源:牛客网 zzq的离散数学教室1 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...

  7. 2018年长沙理工大学第十三届程序设计竞赛 C 取手机 【概率】

    链接:https://www.nowcoder.com/acm/contest/96/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发 ...

  9. 2018年长沙理工大学第十三届程序设计竞赛 I 连续区间的最大公约数

    连续区间的最大公约数 思路:参照BZOJ 4488: [Jsoi2015]最大公约数脑补出的一个\(map\)套\(vector\)的写法,写起来比线段树短,运行时间比线段树快. 代码: #pragm ...

  10. 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

随机推荐

  1. Jitpack发布Android库带文档和源码

    原文地址: Jitpack发布Android库带文档和源码 - Stars-One的杂货小窝 忽然发现自己发布的xAndroidUtil库 写代码的时候看方法注释都看不到,研究了下如何让Jitpack ...

  2. 应用程序通过 Envoy 代理和 Jaeger 进行分布式追踪 —— Ingress Controller + Http服务 + Grpc服务(三)

    1.概述 在<应用程序通过 Envoy 代理和 Jaeger 进行分布式追踪(一)>这篇博文中,我们详细介绍了单个应用程序通过 Envoy 和 Jaeger 实现链路追踪的过程.通过这个示 ...

  3. 多层前馈神经网络及BP算法

    一.多层前馈神经网络 首先说下多层前馈神经网络,BP算法,BP神经网络之间的关系.多层前馈[multilayer feed-forward]神经网络由一个输入层.一个或多个隐藏层和一个输出层组成,后向 ...

  4. API接口开发管理平台--多领域企业数字化管理解决方案

    随着数字化时代的到来,企业需要进行数字化转型才能更好地适应市场需求和用户需求.而API接口则是数字化转型中的重要组成部分,可以帮助企业更好地管理信息,提高效率.本文将介绍挖数据解决方案--API接口开 ...

  5. 探索计算机的I/O控制方式:了解DMA控制器的作用与优势

    I/O控制方式 在前面我们已经了解到,每个设备都配备了一个设备控制器.当CPU向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作.然而,尽管设备控制器会更新状态寄存器的状态,但是如 ...

  6. 《微服务架构设计》——Eventuate Tram框架订阅/消费模式源码解析

    Eventuate Tram框架官方文档: https://eventuate.io/docs/manual/eventuate-tram/latest/getting-started-eventua ...

  7. Record -「CSP-S 2020」赛后总结

    其实这次的 CSP 暴露出来了很多问题. 比如策略上的,在 T1 花了太多的时间直接心态爆炸,后面的题只想着把暴力打满.看到 T2 只想着打暴力,根本没有沉下心来想,白白丢了一道(水)题. T3 连暴 ...

  8. 【Python】代理池针对ip拦截破解

    代理池是一种常见的反反爬虫技术,通过维护一组可用的代理服务器,来在被反爬虫限制的情况下,实现数据的爬取.但是,代理池本身也面临着被目标网站针对ip进行拦截的风险. 本文将详细介绍代理池针对ip拦截破解 ...

  9. CF 下分记录

    7.27 edu152 \(+173=2048\) B 没细看数据范围 WA 了一次 D 没判 \(i-1=0\) WA 了一次 E. Max to the Right of Min 考虑增大右端点, ...

  10. 一些常见小程序的UI设计分享

    外卖优惠券小程序的UI设计 电子商城系统UI分享 A B C