题目大意:

给定n m表示一共n行每行m个蜂巢

求从S到T的最短路径

input

1
3 4
+---+ +---+
/ \ / \
+ +---+ +---+
\ \ / \
+ + S +---+ T +
/ \ / /
+ +---+ + +
\ \ / \
+---+ +---+ +
/ /
+ +---+ + +
\ / \
+---+ +---+ +
\ / \ /
+---+ +---+

output

7

如图所示,其实只要按平常的走迷宫改变一下位移的格数就行了

改成一下的 上,下,左上,右上,左下,右下 的位移格数

如下位移格数,移动后为墙所在的位置,判断有没有墙即可判断能不能通过

int mov[][]={ {-,},{,},
{-,-},{-,},
{,-},{,} };

然后将每个蜂巢的中心点当做固定点,即要到达这个蜂巢就将坐标定位在这个蜂巢的中心点

这样就会发现,两个中心点的距离其实就是两倍位移格数

这个思路很好写 场上想复杂了 直接带偏队友思路 引以为戒a...

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int N=1e4+;
char G[N][N];
int n,m,stx,sty;
int mov[][]={ {-,},{,},
{-,-},{-,},
{,-},{,} };
struct NODE { int x,y,l; };
int bfs() {
queue <NODE> q;
q.push((NODE){stx,sty,});
while(!q.empty()) {
NODE e=q.front(); q.pop();
for(int i=;i<;i++) {
int x1=e.x+mov[i][];
int y1=e.y+mov[i][];
int x2=x1+mov[i][];
int y2=y1+mov[i][];
if(G[x1][y1]==' ' && G[x2][y2]=='T') return e.l+;
if(G[x1][y1]!=' ' || G[x2][y2]!=' ') continue;
G[x2][y2]='#';
q.push((NODE){x2,y2,e.l+});
}
}
return INF;
}
int main()
{
int t; scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
getchar();
n=n*+, m=m*+;
for(int i=;i<=n;i++) {
char ch; G[i][]=' '; int j=;
while(~scanf("%c",&ch)&&ch!='\n') {
G[i][j]=ch;
if(ch=='S') stx=i,sty=j;
j++;
} G[i][j]='\0';
}
int ans=bfs();
if(ans==INF) printf("-1\n");
else printf("%d\n",ans);
} return ;
}

2018ICPC焦作 F. Honeycomb /// BFS的更多相关文章

  1. icpc2018-焦作-F Honeycomb bfs

    http://codeforces.com/gym/102028/problem/F 就是一个bfs,主要问题是建图,要注意奇数和偶数列的联通方案是略有不同的.比赛的时候写完一直不过样例最后才发现没考 ...

  2. Codeforces gym 100685 F. Flood bfs

    F. FloodTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/F Desc ...

  3. 焦作F Modular Production Line 费用流

    题目链接 题解:这道题比赛的时候,学弟说是网络流,当时看N这么大,觉得网络流没法做,实际本题通过巧妙的建图,然后离散化. 先说下建图方式,首先每个覆盖区域,只有左右端点,如果我们只用左右端点的话,最多 ...

  4. 2018ICPC焦作 D-Keiichi Tsuchiya the Drift King /// 几何

    题目大意: https://nanti.jisuanke.com/t/34142 有一个弯道抽象成圆的一部分 车子抽象成矩形 漂移过程中矩形上边会与圆的圆心在同一条直线上 以右上点贴着弯道边缘进行漂移 ...

  5. ICPC 2018 焦作区域赛

    // 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...

  6. ACM/ICPC 之 靠墙走-DFS+BFS(POJ3083)

    //POJ3083 //DFS求靠左墙(右墙)走的路径长+BFS求最短路 //Time:0Ms Memory:716K #include<iostream> #include<cst ...

  7. 1128. Partition into Groups(图着色bfs)

    1128 写的dfs貌似不太对 bfs重写 用bfs将图进行黑白染色 如果有超过一个与自己颜色相同的点 就把该点存入栈中 最后处理栈中的点 判断此点是否合法 不合法 取反 取反后再判断相邻点是否合法 ...

  8. USACO3.25Magic Squares(bfs)

    /* ID: shangca2 LANG: C++ TASK: msquare */ #include <iostream> #include<cstdio> #include ...

  9. HDU ACM 1495 非常可乐(广搜BFS)

    非常可乐 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

随机推荐

  1. 一个小BUG引发的思考。(论开发与测试之间的那点事)

    标题不是“一个馒头引发的血案”. 言归正传:今天上午测试的时候,发现了一个BUG,如图: 一个用肉眼就能发现的BUG.原因当然是因为开发同事没有自测试,流入到了测试人员这里了. 无非是开发同事不严谨造 ...

  2. RabbitMQ 交换器、持久化

    一. 交换器 RabbitMQ交换器(Exchange)分为四种 direct fanout topic headers direct  默认的交换器类型,消息的RoutingKey与队列的bindi ...

  3. Socket通信1.0

    Socket通信1.0 服务器端: package page; import java.io.BufferedReader; import java.io.IOException; import ja ...

  4. PAT_A1112#Stucked Keyboard

    Source: PAT A1112 Stucked Keyboard (20 分) Description: On a broken keyboard, some of the keys are al ...

  5. bootstrap Modal 模态框垂直居中

    解决 Modal 垂直居中的问题,上网找了好多博客,有好多说改源码的,这个并没有实践. 但发现另一种解决办法,可以实现,代码如下: function centerModals(){ $('.modal ...

  6. npm和cnpm的安装(window)

    一:安装node.js 1.进入https://nodejs.org/en/中下载自己电脑相对应的node.js. 2.将下载下来的node.js进行安装. 3.利用管理员身份打开cmd,在里面输入n ...

  7. JUC源码分析-集合篇(一)ConcurrentHashMap

    JUC源码分析-集合篇(一)ConcurrentHashMap 1. 概述 <HashMap 源码详细分析(JDK1.8)>:https://segmentfault.com/a/1190 ...

  8. Java 设计模式之 装饰者模式

    装饰者模式(Decorator Pattern): 概述:装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象 特点: (1) ...

  9. zabbix--源码安装部署zabbix3.2

    zabbix运行在lamp环境或者lnmp环境都是可以的,如果是新系统推荐使用lamp或者lnmp一键安装包, 或者可以向下面这种方式: PHP安装 源码安装 rpm -ivh php55w-comm ...

  10. 关于vsphere exsi安装时遇到的问题

    我在虚拟机上安装vsphere 6.0的时候,在安装的过程中报错,出现了如下的内容. Error loading /tools.t00 Compressed MD5: Decompressed MD5 ...