nyoj 523 双向广搜
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=523
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
/*
用普通搜索TLE,已知起点和终点,可以考虑双向广搜或A*算法加速搜索
双向广搜,一个方向从出发点向终点搜索,一个方向从终点向出发点搜索,搜索到相同的结点时,即找到最短路径。
*/
;
][] = {
,,, -,,,
,,, ,-,,
,,, ,,-
};
int mp[N][N][N];
int vis[N][N][N];//访问标记: 0没有访问过 1 被从开始到终点的方向访问过 2 被终到始的方向访问过
int step[N][N][N];
int h, m, n;
int times;
struct Node {
int z, x, y;
int step;
Node(int _z, int _x, int _y){
z = _z; x = _x; y = _y;
}
};
int bfs()
{
][m-][n-] == ) ;//终点可能是墙...
memset(&vis[][][], , sizeof(vis));
memset(&step[][][], , sizeof(step));
Node start(, , );
vis[][][] = ;
Node end(h-, m-, n-);
vis[h-][m-][n-] = ;
queue<Node> que;
que.push(start);
que.push(end);
while(!que.empty()){
Node cur = que.front();
que.pop();
if(cur.step > times) continue;
int cx = cur.x, cy = cur.y, cz= cur.z;
; i<; i++){
];
];
];
|| tz< || ty< || tz>=h || tx>=m || ty >=n) continue;
) continue;
){
Node next(tz, tx, ty);
step[tz][tx][ty] = step[cz][cx][cy]+;
vis[tz][tx][ty] = vis[cz][cx][cy];//访问标记要保持一致
que.push(next);
} else if(vis[tz][tx][ty] != vis[cz][cx][cy]){//如果访问标记不一致,则说明来自不同方向上搜索的相遇的结点
<= times? step[cz][cx][cy]+step[tz][tx][ty]+: -;
}
}
}
;
}
int main()
{
//INPUT;
//OUTPUT;
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d%d%d%d", &h, &m, &n, ×);
; i<h; i++){
; j<m; j++){
; k<n; k++){
scanf("%d", &mp[i][j][k]);
}
}
}
printf("%d\n", bfs());
}
;
}
nyoj 523 双向广搜的更多相关文章
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 双向广搜 codevs 3060 抓住那头奶牛
codevs 3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...
- 双向广搜+hash+康托展开 codevs 1225 八数码难题
codevs 1225 八数码难题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Yours和zero在研究A*启 ...
- 【双向广搜+逆序数优化】【HDU1043】【八数码】
HDU上的八数码 数据强的一B 首先:双向广搜 先处理正向搜索,再处理反向搜索,直至中途相遇 visit 和 队列都是独立的. 可以用一个过程来完成这2个操作,减少代码量.(一般还要个深度数组) 优化 ...
- poj 3131 Cubic Eight-Puzzle 双向广搜 Hash判重
挺不错的题目,很锻炼代码能力和调试能力~ 题意:初始格子状态固定,给你移动后格子的状态,问最少需要多少步能到达,如果步数大于30,输出-1. 由于单向搜索状态太多,搜到二十几就会爆了,所以应该想到双向 ...
- 万圣节后的早晨&&九数码游戏——双向广搜
https://www.luogu.org/problemnew/show/P1778 https://www.luogu.org/problemnew/show/P2578 双向广搜. 有固定起点终 ...
- Eleven puzzle_hdu_3095(双向广搜).java
Eleven puzzle Time Limit: 20000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
随机推荐
- HTTP method GET is not supported by this URL(转)
源地址:http://blog.csdn.net/qfs_v/article/details/2545168 Servlet eroor:HTTP method GET is not support ...
- iOS 7用户界面过渡指南
iOS 7用户界面过渡指南 泽涛陈 | 交互设计 视觉设计 译译生辉 | 2013.06.26 本文最新PDF格式文档下载: http://vdisk.weibo.com/s/InBpB(2013年7 ...
- No CurrentSessionContext configured 异常解决
Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext conf ...
- 从UI开始
虚拟化平台cloudstack(8)——从UI开始 UI ucloudstack采用的是前后端分离的架构,就是说前端可以选择使用web.swing甚至其它的界面,都可以. 我们来看cloudsta ...
- C#下丢掉.asmx文件的WebService的实现
C#下丢掉.asmx文件的WebService的实现 我在用.net实现Webservice的时候发现需要一个没有任何用处的.asmx文件,但是却没法删除,这两天我实现一个通过接口时想实现dll直接部 ...
- ISupportInitialize的用处
[译]ISupportInitialize的用处 [译]ISupportInitialize的用处 注:本文是对How ISupportInitialize Can Help的翻译.原文作者编 ...
- static类成员(变量和函数)
0. 使用背景 对于特定类类型的全体对象而言,访问一个全局对象有时是必要的.也许,在程序的任意点需要统计已创建的特定类类型对象的数量:或者,全局对象可能是指向类的错误处理例程的一个指针:或者,它是指向 ...
- [置顶] IT老男人读《因为痛,所以叫青春》
最近偶然,从别人的书桌上看到这本书,其中有个关于时间的解释,很是让为成功焦虑的老男人受用. 因此,我喜欢将人生的80年跟一天中的24小时进行对照. 人生时钟的计算方法十分简单.24小时相当于144 ...
- java输出万年历
import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class M ...
- java BigInteger源码学习
转载自http://www.hollischuang.com/archives/176 在java中,有很多基本数据类型我们可以直接使用,比如用于表示浮点型的float.double,用于表示字符型的 ...