acm-uva10653解题报告
来源:互联网 发布:js 箭头函数作用域 编辑:程序博客网 时间:2024/06/11 14:52
题目网址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=18&page=show_problem&problem=1594
题目大意:二维迷宫求最短路
解题思想:标准BFS
代码:
#include <cstdio>
#include <queue>#include <cstring>
using namespace std;
#define MAXN 1100
int map[MAXN][MAXN],book[MAXN*MAXN];
const int dir[4][2] = {{-1,0},{0,-1},{0,1},{1,0}};
int main()
{
int R,C;
while(scanf("%d%d",&R,&C)&&R!=0&&C!=0)
{
int k;
scanf("%d",&k);
memset(map,0,sizeof map);
for(int i=0;i<k;i++)
{
int r,n;
scanf("%d%d",&r,&n);
for (int j=0;j<n;j++)
{
int x;
scanf("%d",&x);
map[r][x]=1;
}
}
int x,y;
scanf("%d%d",&x,&y);
int start=x*C+y;
scanf("%d%d",&x,&y);
int finish=x*C+y;
queue<int>q;
memset(book,-1,sizeof book);
q.push(start);book[start]=0;
while (!q.empty())
{
int u=q.front();
q.pop();
if (u==finish)break;
int x=u/C;
int y=u%C;
for (int i=0;i<4;i++)
{
int dx=x+dir[i][0],dy=y+dir[i][1];
int v=dx*C+dy;
if (dx>=0&&dx<R&&dy>=0&&dy<C&&map[dx][dy]==0&&book[v]==-1)
{
book[v]=book[u]+1;
q.push(v);
}
}
}
printf("%d\n", book[finish]);
}
return 0;
}
0 0
- acm-uva10653解题报告
- ACM--HDOJ2005解题报告
- ACM--HDOJ2503解题报告
- ACM--HDOJ2004解题报告
- ACM--HDOJ2502解题报告
- ACM--HDOJ2031解题报告
- ACM--HDOJ1201解题报告
- ACM解题报告
- ACM解题报告
- ACM-FZOJ1011解题报告
- ACM解题报告 POJ1012
- acm-poj1068解题报告
- acm-poj1051解题报告
- acm-poj1050解题报告
- acm-poj1004解题报告
- acm-poj1003解题报告
- acm-hdu5264解题报告
- acm-hdu5265解题报告
- C语言:非减链表的合并
- HahMap 与 ConcurrentHashMap 对比
- HDU 2191 多重背包问题
- leetCode 105.Construct Binary Tree from Preorder and Inorder Traversal (根据前序遍历和中序遍历构造二叉树)
- DEX 方法超过64K限制和gradle编译OOM问题解决
- acm-uva10653解题报告
- cygwin不能执行make
- 设计模式之Factory----经典
- IOS中Json解析的四种方法
- leetCode 106.Construct Binary Tree from Inorder and Postorder Traversal (根据中序遍历和后序遍历构造二叉树)
- S5PV210裸板驱动:启动
- 【暑假集训】之被ACM金牌大神虐的第二天之图论篇
- 两个Integer值比较不相等问题
- linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法