BFS 模板
转自:欣哥
下面是bfs一般的形式,谈不上模板
但一般都这么来做
有点乱
有什么多交流
bfs一般用于求最短时间
#include<stdio.h>
#include<queue>
using namespace std; 上面是头文件定义
struct stu 开两个结构体abc,xyz,一般都开两个
{
int x;
int y;
int t;
}abc,xyz;
queue<struct stu> p; 定义一个struct stu型STL队列
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}} 方向数组
char map[50][50] 地图,一般不超过50*50
int a,b,c,t,flag; 全局变量,一般是地图大小等
void bfs() 进入bfs
{
int i;
while(!p.empty())队列为空时跳出
{
abc=p.front(); 从队首读入
p.pop(); 删除队首
if()这里一般判断现在abc结构体所指的 map[][] 是否为最终目标
{
。。。。。
return;
}
for(i=0;i<4;i++) 循环周围四个方向
{
xyz.x=abc.x+dir[i][0]; xyz.x用于记录由abc产生的新的横坐标
xyz.y=abc.y+dir[i][1]; xyz.y用于记录由abc产生的新的纵坐标
if((xyz.x>=1&&xyz.x<=a)&&(xyz.y>=1&&xyz.y<=b))&&(!map[xyz.x][xyz.y])) 如果新坐标还在迷宫里且不是墙
{
xyz.t=abc.t+1; 时间+1
p.push(xyz); 压入队尾
map[xyz.x][xyz.y]=1; 标记为走过
}
}
}
}
int main()
{
int k,i,j,r;
scanf("%d",&k);
while(k--)
{
scanf("%d%d%d%d",&a,&b,&c,&t);
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
{
scanf("%d",&map[i][j]);
}
}
flag=-1;
abc.x=abc.y=abc.z=1;
abc.t=0;
p.push(abc);
bfs();
while(!p.empty()) 清空队列,否则影响下一组输入
{
p.pop();
}
}
return 0;
}
BFS 模板的更多相关文章
- HDU5012:Dice(bfs模板)
http://acm.hdu.edu.cn/showproblem.php?pid=5012 Problem Description There are 2 special dices on the ...
- POJ-2251 Dungeon Master (BFS模板题)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- BFS (1)算法模板 看是否需要分层 (2)拓扑排序——检测编译时的循环依赖 制定有依赖关系的任务的执行顺序 djkstra无非是将bfs模板中的deque修改为heapq
BFS模板,记住这5个: (1)针对树的BFS 1.1 无需分层遍历 from collections import deque def levelOrderTree(root): if not ro ...
- PAT1076. Forwards on Weibo(标准bfs模板)
//标准的层次遍历模板 //居然因为一个j写成了i,debug半天.....解题前一定要把结构和逻辑想清楚,不能着急动手,理解清楚题意,把处理流程理清楚再动手,恍恍惚惚的写出来自己慢慢debug吧 # ...
- 图的遍历——DFS和BFS模板(一般的图)
关于图的遍历,通常有深度优先搜索(DFS)和广度优先搜索(BFS),本文结合一般的图结构(邻接矩阵和邻接表),给出两种遍历算法的模板 1.深度优先搜索(DFS) #include<iostrea ...
- POJ:Dungeon Master(三维bfs模板题)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16748 Accepted: 6522 D ...
- hdu1242 又又又是逃离迷宫(bfs模板题)
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1242/ 这次的迷宫是有守卫的,杀死一个守卫需要花费1个单位的时间,所以以走的步数为深度,在每一层进行搜索,由于走 ...
- 2014 网选 5012 Dice(bfs模板)
/* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种 ...
- HRBUST 1181 移动 bfs模板
#include<bits/stdc++.h>///该头文件为万能头文件,有些学校oj不能使用,读者可根据需要自行修改 using namespace std; ; int vis[MAX ...
随机推荐
- wordpress使用video.js与七牛云存储实现无广告视频分享应用
video.js是一款极受欢迎的基于HTML5的开源WEB视频播放器,其充分利用了HTML5的视频支持特性,可以实现全平台的无视频插件播放功能,对于现在流行的手机.PAD等移动智能终端有极佳的应用体验 ...
- WinForm TreeView节点重绘,失去焦点的高亮显示
当用户焦点离开TreeView时,TreeView选中节点仍然高亮,但是颜色符合主题. 设置TreeView.HideSelection = False;可让选中节点保持高亮. 添加重绘事件 Tree ...
- centos系统下安装使用composer教程
Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "packages" ...
- Eclipse使用ButterKnife前,需要的配置步骤
ButterKnife下载地址(7.0.1版本):http://files.cnblogs.com/files/zzw1994/butterknife-7.0.1.zip 官方下载地址(7.0.1版本 ...
- 你的数据根本不够大,别老扯什么Hadoop了
本文原名"Don't use Hadoop when your data isn't that big ",出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯 ...
- 从零单排学JavaWeb
之前是一个asp爱好者,感觉前途渺茫,特此转向Powerful的Java阵型,寻求心灵上的慰藉. 把自己遇到的问题记录下来,同时也分享给大家. 环境-下载 1 JDK http://dlsw.bai ...
- C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)
使用 SendKeys 将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用 Send.若要等待键击启动的任何进程,请使用 SendWait. 每个键都 ...
- iOS 进阶 第七天(0403)
0403 QQ列表展开收起的原理 更改 numbersOfRowsInSection 的返回的数目,为0则收起group,不为零则为展开.先修改模型数据 刷新对应的表格 代码如下: 这个地方会出现一个 ...
- c++线程传参问题
std::thread可以和任何可调用类型一起工作,可调用对象和函数带有参数时,可以简单地将参数传递给std::thread的构造函数 例如: #include<iostream> #in ...
- 微软职位内部推荐-Senior Dev Lead
微软近期Open的职位: Bing Index Serve team is hiring! We are one of the core teams in Bing serving more than ...