转自:欣哥

下面是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 模板的更多相关文章

  1. HDU5012:Dice(bfs模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=5012 Problem Description There are 2 special dices on the ...

  2. 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 ...

  3. BFS (1)算法模板 看是否需要分层 (2)拓扑排序——检测编译时的循环依赖 制定有依赖关系的任务的执行顺序 djkstra无非是将bfs模板中的deque修改为heapq

    BFS模板,记住这5个: (1)针对树的BFS 1.1 无需分层遍历 from collections import deque def levelOrderTree(root): if not ro ...

  4. PAT1076. Forwards on Weibo(标准bfs模板)

    //标准的层次遍历模板 //居然因为一个j写成了i,debug半天.....解题前一定要把结构和逻辑想清楚,不能着急动手,理解清楚题意,把处理流程理清楚再动手,恍恍惚惚的写出来自己慢慢debug吧 # ...

  5. 图的遍历——DFS和BFS模板(一般的图)

    关于图的遍历,通常有深度优先搜索(DFS)和广度优先搜索(BFS),本文结合一般的图结构(邻接矩阵和邻接表),给出两种遍历算法的模板 1.深度优先搜索(DFS) #include<iostrea ...

  6. POJ:Dungeon Master(三维bfs模板题)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16748   Accepted: 6522 D ...

  7. hdu1242 又又又是逃离迷宫(bfs模板题)

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1242/ 这次的迷宫是有守卫的,杀死一个守卫需要花费1个单位的时间,所以以走的步数为深度,在每一层进行搜索,由于走 ...

  8. 2014 网选 5012 Dice(bfs模板)

    /* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种 ...

  9. HRBUST 1181 移动 bfs模板

    #include<bits/stdc++.h>///该头文件为万能头文件,有些学校oj不能使用,读者可根据需要自行修改 using namespace std; ; int vis[MAX ...

随机推荐

  1. net中的编译

    1.MSBuild 四个基本块(属性.项.任务.目标): MSBuild属性:   属性是一些键/值对,主要用来存储一些配置信息. MSBuild  项:   主要是存储一些项目文件信息,以及文件的元 ...

  2. jcscriput

    关于h5,相比前端的同事们都很了解了吧!h5里面有个canvas,现在用的蛮火.但是canvas里面的代码确实是有点繁多,特别是要对于图形做什么操作的时候...我昨天无意间发现了一个canvas的插件 ...

  3. php 读取文件头判断文件类型的实现代码

    php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 例子: <?php $filename = "11.jpg"; //为图片的路径可以用d:/uploa ...

  4. WPF之旅(一)- 概述

    WPF与之前出现的其他技术相比引入了“内置硬件加速”和“分辨率无关”等创新功能.WPF是一种成熟的技术,它是几个已经发布的.NET平台的一部分,并通过几个版本不断地进行完善(WPF3.0 -> ...

  5. MySQL Server-id的作用

    1. mysql同步的数据中是包含server-id的,用于标识该语句最初是从哪个server写入的,因此server-id一定要有的 2. 每一个同步中的slave在master上都对应一个mast ...

  6. adbd cannot run as root in production builds

    首先必须保证手机已经root过,可以通过以下验证: $ adb shell root@dior:/ $ su root@dior:/ # 1 2 3 执行命令后,$ 变为 # 即 root 成功 但是 ...

  7. 安装Golang 1.6及开发环境

    安装Golang 1.6及开发环境=====================================> 下载软件    * go1.4.2.linux-amd64.tar.gz     ...

  8. Version of SQLite used in Android?

    sing the emulators (adb shell sqlite3 --version): SQLite 3.7.11: 19-4.4-KitKat 18-4.3-Jelly Bean 17- ...

  9. ffmpeg 音频转码

    大多数厂家摄像机输出的音频流格式都是PCM,有一些场合(比如讲音视频流保存成Ts流)需要将PCM格式转成AAC格式.基本的思路是先解码得到音频帧,再将音频帧编码成AAC格式.编码和解码之间需要添加一个 ...

  10. matlab和本机MySQL链接

    1.安装好 ***matlab*** 和 ***mysql***: 2.[下载](http://dev.mysql.com/downloads/connector/j/#downloads) mysq ...