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 ...
随机推荐
- 使用JDBC插入数据到ORACLE,使用标识列自增列
不同于SQL Server的是,Oracle中插入数据的时候,没有自增列或者是标识列,但是,我们又不想显式的进行主键的插入,这里,必须在Oracle数据库中指定一个标识列,或者说是一个序列.具体方法如 ...
- Matlab 曲线拟合之polyfit与polyval函数
p=polyfit(x,y,n) [p,s]= polyfit(x,y,n) 说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p.x必须是单调的.矩阵s用于生成预测值的误差估 ...
- linux制做RPM包
制作rpm包 1.制作流程 1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好 ...
- 【node.js】Error: CERT_UNTRUSTED
背景 : 在linux centos7 上 进行npm 命令是报错: Error: CERT_UNTRUSTED 解决办法: 关掉HTTPS就好了 npm config set strict-ssl ...
- linux 文件编码问题
iconv -f UTF- -t gb18030 file_input -o file_output 上述命令不一定有用. 大概了解下文件编码,和vim里面的编码情况. 1 字符编码基础知识 字符编码 ...
- 金蝶KIS问题解决汇总
1.帐套结转时,提示t_subsys插入重复键 解决: I.删除索引 alter table t_subsys drop constraint pk_subsys II.t_rp_initial表 ...
- android 线程间的通信
(转自:http://www.cnblogs.com/allin/archive/2010/05/19/1738800.html) andriod提供了 Handler 和 Looper 来满足线程间 ...
- Elasticsearch学习之ES节点类型以及各种节点的分工
ES各种节点的分工 1. 客户端节点 当主节点和数据节点配置都设置为false的时候,该节点只能处理路由请求,处理搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器.独立的客户端节点在一 ...
- 【转】常用html转义符,JavaScript转义符
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- srilm使用杂记
训练n-gram语言模型 ngram-count -text train.txt -order -lm model -kndiscount -interpolate -gt3min -gt4min 计 ...