FOJ 1205
Problem 1205 小鼠迷宫问题
Accept: 522 Submit: 1679 Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
问题描述 小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。
小鼠的迷宫
编程任务
对于给定的小鼠的迷宫,编程计算小鼠a通向小鼠b的所有最短道路。
Input
结果输出
Output
Sample Input
Sample Output
Source
FJOI2005
#include<stdio.h>
#include<string.h>
int sx[]={,,,-};
int sy[]={,,-,};
int map[][];
int mark[][];
int n,m;
int x1,y1,x2,y2;
int min_step,sum_min;
int que[][];
int que_step[];
void bfs(int h,int l)
{ int front,rear;
front=rear=;
que[rear][]=h;
que[rear][]=l;
rear++;
map[h][l]=;
que_step[front]=;
int xx,yy,i; while(front<rear)
{
for(i=;i<;i++)
{
xx=que[front][]+sx[i];
yy=que[front][]+sy[i]; if(xx==x2&&yy==y2)
{
min_step=que_step[front]+;
return;
}
if(map[xx][yy]==&&xx<=n&&xx>=&&yy>=&&yy<=m)
{
//printf("(%d %d) step=%d\n",xx,yy,que_step[front]+1);
que[rear][]=xx;
que[rear][]=yy;
que_step[rear]=que_step[front]+;
rear++;
map[xx][yy]=; }
}
front++;
}
}
int t;
void dfs(int x,int y,int c_step)
{
//printf("%d\n",c_step);
if(x==x2&&y==y2&&c_step==min_step)
{ sum_min++; return ;
}
if((x>x2?x-x2:x2-x)+(y>y2?y-y2:y2-y)+c_step>min_step) return ;
int i;
for(i=;i<;i++)
{
int xx,yy;
xx=x+sx[i];
yy=y+sy[i];
if(xx>=&&xx<=n&&yy>=&&yy<=m&&mark[xx][yy]==)
{
mark[xx][yy]=;
dfs(xx,yy,c_step+);
mark[xx][yy]=;
}
} }
int main()
{
int k,i,j;
while(scanf("%d %d %d",&n,&m,&k)!=EOF)
{
min_step=-;sum_min=;
for(i=;i<=n;i++)
{
memset(map[i],,sizeof(map[i]));
memset(mark[i],,sizeof(mark[i]));
}
for(i=;i<=k;i++)
{
int a,b;
scanf("%d %d",&a,&b);
map[a][b]=;
mark[a][b]=;
}
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
t=;
bfs(x1,y1); if(min_step==-)
printf("No Solution!\n");
else
{
dfs(x1,y1,);
printf("%d\n%d\n",min_step,sum_min);
}
}
return ;
} /* 3 3 1
2 2
1 1
3 3 */
FOJ 1205的更多相关文章
- Caused by: java.sql.BatchUpdateException: Transaction error, need to rollback. errno:1205 Lock wait timeout exceeded; try restarting transaction
更新的时候报 Caused by: java.sql.BatchUpdateException: Transaction error, need to rollback. errno:1205 Loc ...
- Mysql Error:1205错误诊断
前两天遇到一个1205(ER_LOCK_WAIT_TIMEOUT)的错误,弄了半天终于找到原因,掌握原理+细心才能找到罪归祸首.下面我给大家分享下这个问题的分析处理过程,希望对大家有所帮助.接到sla ...
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- Problem 2020 组合(FOJ)
Problem 2020 组合 Accept: 714 Submit: 1724Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- magento后台登陆被锁定 索引报错的解决:General error: 1205 Lock wait timeout
1. magento在索引的时候用shell,有时候会报错: General error: 1205 Lock wait timeout exceeded 这个时候,是因为行锁的原因,在表中您直接用s ...
- wikioi 1205 单词倒排
/*====================================================================== 1205 单词翻转 题目描述 Description ...
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
测试库一条update语句报错:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction mysql> ...
- 九度OJ 1205 N阶楼梯上楼问题 -- 动态规划(递推求解)
题目地址:http://ac.jobdu.com/problem.php?pid=1205 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括 ...
- hdu 1205
#include <stdio.h> int a[1005000]; int main() { int t; scanf("%d",&t); while(t-- ...
随机推荐
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- java线程技术6_线程的挂起和唤醒[转]
转自:http://blog.chinaunix.net/uid-122937-id-215913.html 1. 线程的挂起和唤醒 挂起实际上是让线程进入“非可执行”状态下,在这个状态下C ...
- log4j:WARN Please initialize the log4j system properly.解决
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlA ...
- Qt模型/视图框架----简单的例子
#include<qapplication.h> #include<qfilesystemmodel.h> #include<qtreeview.h> #inclu ...
- hdu1025 最长上升子序列 (nlogn)
水,坑. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm&g ...
- Servlet,GenericServlet和HttpServlet的继承关系
HttpServlet是GenericServlet的子类. GenericServlet是个抽象类,必须给出子类才能实例化.它给出了设计servlet的一些骨架,定义了servlet生命周期,还有一 ...
- 替换文件最后一行中的所有e 为 E
#root@athena5plus:~# cat b northwest NW Charles Main 3.0 .98 3 ...
- BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...
- 高斯混合聚类及EM实现
一.引言 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussian Mixture Model (GMM).事实上,GMM 和 k-means 很像,不过 G ...
- DLUTOJ 1142 高中的公式
传送门 Time Limit: 1 Sec Memory Limit: 128 MB Description 据说...高中学习了好多公式.所以...萌学长不知道该用什么公式来解决下面这个问题.对于 ...