SDUT1157:小鼠迷宫问题(bfs+dfs)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1157
题目描述
请编程对于给定的小鼠的迷宫,计算小鼠a通向小鼠b的所有最短道路。
输入
每组数据的第一行有3个正整数n,m,k,分别表示迷宫的行数,列数和封闭的房间数。
接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号。
最后的2行,每行也有2个正整数,分别表示小鼠a所处的方格(p,q)和小鼠b所处的方格(r,s)。
输出
每组数据输出两行,第一行是最短路长度;第2行是不同的最短路数。
每组输出之间没有空行。
如果小鼠a无法通向小鼠b则输出“No Solution!”。
示例输入
8 8 3
3 3
4 5
6 6
2 1
7 7
示例输出
11
96
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <queue>
using namespace std;
char map[][];
int v[][];
struct node
{
int ans,x,y;
};
struct node t,f;
int a[],b[];
int fx[]= {,-,,};
int fy[]= {,,,-};
int n,m,k,flag,sum;
void bfs()
{
queue<node>q;
memset(v,,sizeof(v));
t.x=a[];
t.y=a[];
t.ans=;
q.push(t);
v[a[]][a[]]=;
while(!q.empty())
{
t=q.front();
q.pop();
if(t.x==b[]&&t.y==b[])
{
printf("%d\n",t.ans);
flag=t.ans;
return ;
}
for(int i=; i<; i++)
{
f.x=t.x+fx[i];
f.y=t.y+fy[i];
if(f.x>=&&f.x<=n&&f.y>=&&f.y<=m&&v[f.x][f.y]==&&map[f.x][f.y]!=)
{
f.ans=t.ans+;
v[f.x][f.y]=;
q.push(f);
}
}
}
printf("No Solution!\n");
return ;
}
void dfs(int xx,int yy,int ans)
{
int tx,ty;
if(xx==b[]&&yy==b[]&&ans==flag)
{
sum++;
}
if(xx>b[]||yy>b[]||ans>=flag) return ;
for(int i=; i<; i++)
{
tx=xx+fx[i];
ty=yy+fy[i];
if(tx>=&&tx<=n&&ty>=&&ty<=m&&v[tx][ty]==&&map[tx][ty]!=&&ans<flag)
{
v[tx][ty]=;
dfs(tx,ty,ans+);
v[tx][ty]=;
}
}
}
int main()
{
int xx,yy;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
flag=;
sum=;
memset(map,,sizeof(map));
for(int i=; i<=k; i++)
{
scanf("%d%d",&xx,&yy);
map[xx][yy]=;
}
scanf("%d%d",&a[],&a[]);
scanf("%d%d",&b[],&b[]);
bfs();
if(flag==) continue;
memset(v,,sizeof(v));
v[a[]][a[]]=;
dfs(a[],a[],);
printf("%d\n",sum);
}
return ;
}
SDUT1157:小鼠迷宫问题(bfs+dfs)的更多相关文章
- ytu 1980:小鼠迷宫问题(DFS 深度优先搜索)
小鼠迷宫问题 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 1 Solved: 1 [Submit][Status][Web Board] Desc ...
- [Swust OJ 409]--小鼠迷宫问题(BFS+记忆化搜索)
题目链接:http://acm.swust.edu.cn/problem/409/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- 小鼠迷宫问题【sdut1157】【dfs,bfs综合题目】
小鼠迷宫问题 Time Limit: 1500ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 小鼠a与小鼠b身处一个m×n的迷宫中,如图所示.每一个方格表示迷宫中 ...
- FOJ1205 小鼠迷宫问题 (BFD+递推)
FOJ1205 小鼠迷宫问题 (BFD+递推) 小鼠a与小鼠b身处一个m×n的迷宫中,如图所示.每一个方格表示迷宫中的一个房间.这m×n个房间中有一些房间是封闭的,不允许任何人进入.在迷宫中任何位置均 ...
- POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)
思路描述来自:http://hi.baidu.com/perfectcai_/item/701f2efa460cedcb0dd1c820也可以参考黑书P89的积水. 题意:Farmer John有一个 ...
- 邻结矩阵的建立和 BFS,DFS;;
邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...
- Collect More Jewels(hdu1044)(BFS+DFS)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Cleaning Robot (bfs+dfs)
Cleaning Robot (bfs+dfs) Here, we want to solve path planning for a mobile robot cleaning a rectangu ...
- LeetCode:BFS/DFS
BFS/DFS 在树专题和回溯算法中其实已经涉及到了BFS和DFS算法,这里单独提出再进一步学习一下 BFS 广度优先遍历 Breadth-First-Search 这部分的内容也主要是学习了labu ...
随机推荐
- Delphi应用程序的调试(一)
集成式调试器是Delphi IDE的一个重要特性.该调试器使用户能方便地设置断点.监视变量.检查对象等等.在运行程序时,使用该调试器能快速查找出程序发生了什么(或未发生什么).一个号的调试器对程序开发 ...
- Linux命令 uname:查看系统与内核相关信息
zh@zh:~$uname --help zh@zh:~$uname -a //所有系统相关的信息
- Ubuntu Eclipse配置Python开发环境
一 在Eclipse中安装pydev插件 启动Eclipse, 点击Help->Install New Software... 在弹出的对话框中,点Add 按钮. Name中填:Pydev Lo ...
- 使用gdb调试theos tweak插件
查看设备日志tail -f /var/log/syslog或者 Mobilesubstrate injects your dylib into the target process. Debuggin ...
- 如何区分slice、splice和split
小颖之前写过一篇文章:JavaScript Array 对象方法 以及 如何区分javascript中的toString().toLocaleString().valueOf()方法中有分享过slic ...
- IOS开发 REST请求 ASIHTTPRequest用法
ASIHTTPRequest类库简介和使用说明 官方网站: http://allseeing-i.com/ASIHTTPRequest/ .可以从上面下载到最新源码,以及获取到相关的资料. 使用iOS ...
- msyql DATETIME类型和Timestamp之间的转换
DATETIME -> Timestamp: UNIX_TIMESTAMP(...) Timestamp -> DATETIME: FROM_UNIXTIME(...) select da ...
- python的for else组合用法
如下代码,输入评论,如果评论中含有敏感词则更换成*号,否则正常输入. li = ["老师", "你好", "333", "4444 ...
- django的queryset和objects对象
1. queryset是查询集,就是传到服务器上的url里面的内容.Django会对查询返回的结果集QerySet进行缓存,这里是为了提高查询效率. 也就是说,在你创建一个QuerySet对象的时候, ...
- mysql多列索引优化
“把Where条件里面的列都建上索引”,这种说法其实是非常错误的! 这样一个查询,假设actor_id与film_id都单独建立索引 SELECT film_id , actor_id FROM sa ...