2018ICPC焦作 F. Honeycomb /// BFS
题目大意:
给定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的更多相关文章
- icpc2018-焦作-F Honeycomb bfs
http://codeforces.com/gym/102028/problem/F 就是一个bfs,主要问题是建图,要注意奇数和偶数列的联通方案是略有不同的.比赛的时候写完一直不过样例最后才发现没考 ...
- Codeforces gym 100685 F. Flood bfs
F. FloodTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/F Desc ...
- 焦作F Modular Production Line 费用流
题目链接 题解:这道题比赛的时候,学弟说是网络流,当时看N这么大,觉得网络流没法做,实际本题通过巧妙的建图,然后离散化. 先说下建图方式,首先每个覆盖区域,只有左右端点,如果我们只用左右端点的话,最多 ...
- 2018ICPC焦作 D-Keiichi Tsuchiya the Drift King /// 几何
题目大意: https://nanti.jisuanke.com/t/34142 有一个弯道抽象成圆的一部分 车子抽象成矩形 漂移过程中矩形上边会与圆的圆心在同一条直线上 以右上点贴着弯道边缘进行漂移 ...
- ICPC 2018 焦作区域赛
// 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...
- ACM/ICPC 之 靠墙走-DFS+BFS(POJ3083)
//POJ3083 //DFS求靠左墙(右墙)走的路径长+BFS求最短路 //Time:0Ms Memory:716K #include<iostream> #include<cst ...
- 1128. Partition into Groups(图着色bfs)
1128 写的dfs貌似不太对 bfs重写 用bfs将图进行黑白染色 如果有超过一个与自己颜色相同的点 就把该点存入栈中 最后处理栈中的点 判断此点是否合法 不合法 取反 取反后再判断相邻点是否合法 ...
- USACO3.25Magic Squares(bfs)
/* ID: shangca2 LANG: C++ TASK: msquare */ #include <iostream> #include<cstdio> #include ...
- HDU ACM 1495 非常可乐(广搜BFS)
非常可乐 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
随机推荐
- KMP算法 (字符串的匹配)
视频参考 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(m+n). 设主串为ptr="ababaaababaa ...
- 在Windows Server2016中安装SQL Server2016(转)
在Windows Server2016中安装SQL Server2016(转) 转自: http://blog.csdn.net/yenange/article/details/52980135 参考 ...
- npm install 超时 国内 切换源; npm ERR! code ELIFECYCLE;
install 超时 查看npm源地址 npm config get registry #http://registry.npmjs.org 为国外镜像地址 设置阿里云镜像 npm config se ...
- 机器学习中python的有关使用技巧【创建虚拟环境、jupyter的kernel修改】
1.创建虚拟环境<在原来基础上建立> *注:(这里是python2.python3环境共存,我要创建一个python3的虚拟环境) 一.先安装虚拟环境变量: pip3 install -U ...
- 大数运算之 Java BigInteger 的基本用法
大数运算之 Java BigInteger 的基本用法 在程序设计竞赛中会遇到高精度运算的问题,C++没有高精度运算,只能手动模拟人工运算,手动实现高精度,而 java.math 包中的 BigInt ...
- 【Java多线程系列随笔一】浅析 Java Thread.join()
一.在研究join的用法之前,先明确两件事情. 1.join方法定义在Thread类中,则调用者必须是一个线程, 例如: Thread t = new CustomThread(); //这里一般是自 ...
- python3 使用int函数将浮点数转换成整数
int函数将浮点数转换成整数需要注意的地方 >>> int(153)153>>> int(153.4)153>>> int(153.5)153&g ...
- D题 Robots 【期望】
Robots Given a directed graph with no loops which starts at node 11 and ends at node nn.There is a r ...
- ES7/ES8 语法学习
作为一个前端开发者,感觉需要学习的东西贼多,ES6刚学会用没多久,又得学习了解ES7/ES8新增的东西,这里是看了大佬们文章的一点点总结以及摘抄的内容,给自己当笔记使用 内容转载自:https://w ...
- 初识微服务框架ServiceComb
https://blog.csdn.net/zengdongwen/article/details/93486257 后续跟进学习.