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 ...
随机推荐
- thinkphp ajax调用demo
http://files.cnblogs.com/files/jxkshu/tp_ckgd.rar
- MProtect使用小计【三】 – 权限管理
说明 本篇简单的说一下怎么样使用的VMProtect的权限管理功能,使我们的程序拥有注册码的功能.只用的注册版的程序才能执行指定的函数. 同样这个功能VMProtect也有例子位置在:安装目录\VMP ...
- 【SQL】语句/函数汇总
1.CHARINDEX(短字符A,长字符B) 说明:返回A在B的位置,从1开始,若B中不存在A,则为0 例如: SELECT CHARINDEX('aaaa','abaaaacded') ----- ...
- springBoot使用PageHelper当超过最大页数后仍然返回数据
在SpringBoot中使用PageHelper分页插件时,如果设置pagehelper.reasonable=true时,pageNum<=0 时会查询第一页, pageNum>page ...
- 13、testng.xml对用例进行分组
目录如下: TestGroup.java 代码如下: package com.testng.cn; import org.testng.annotations.*; import static org ...
- jquery 临时存值
function toSort(orderBy) { if (orderBy == $('#orderBy').data("order")) {// 再次点击同一个排序时 $('# ...
- YApi导入swagger生成的接口
1.swagger的JSON地址,net或netcore开发环境下 2.配置在内网中,localhost请用对应的IP地址替换,在浏览器地址栏中输入以上地址,会返回一个json格式的文档 3.导入 4 ...
- 10种JavaScript特效实例让你的网站更吸引人
我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预 ...
- 初识微服务框架ServiceComb
https://blog.csdn.net/zengdongwen/article/details/93486257 后续跟进学习.
- 关于vsphere exsi安装时遇到的问题
我在虚拟机上安装vsphere 6.0的时候,在安装的过程中报错,出现了如下的内容. Error loading /tools.t00 Compressed MD5: Decompressed MD5 ...