codevs——3344 迷宫
小刚在迷宫内,他需要从A点出发,按顺序经过B,C,D……,到达最后一个点,再回到A点。迷宫内有些障碍,问至少走几步。
第一行有三个数n,m表示迷宫有n行,m列。
第2行到第n+1行,每行m个字符,可能是’A’..’Z’,’2’,’0’ 其中,2表示障碍,0表示可以走。’A’..’Z’也可以走。
至少走几步可以按规定走完,如果不行,输出“Impossible”
5 5
A002B
022C0
000D0
00222
0000E
26
0%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“B”。
30%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“G”。
50%的数据满足:1<=n<=10 1<=m<=10 字母为“A”..“Z”。
10%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“B”。
30%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“G”。
100%的数据满足:1<=n<=100 1<=m<=100 字母为“A”..“Z”。
bfs
以A为起点以B为终点,以B为起点以C为终点、、、以此类推,跑sum遍bfs找出每一个点到它下一个点的最小值,然后累加就可以了。
不要忘了判断没有路的情况
#include<queue>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 210
using namespace std;
char ch;
bool flag;
int dis[N][N],map[N][N];
int n,m,sx,sy,ex,ey,sum,ans;
]={,,,-},yy[]={,-,,};
int read()
{
,f=; char ch=getchar();
') ch=getchar();
+ch-'; ch=getchar();}
return x*f;
}
struct Node
{
int x,y;
}node[],que;
queue<Node>q;
void bfs(int sx,int sy)
{
while(!q.empty()) q.pop();
memset(dis,0x3f3f3f3f,sizeof(dis));
dis[sx][sy]=;
que.x=sx,que.y=sy,q.push(que);
while(!q.empty())
{
Node p=q.front();q.pop();
if(p.x==ex&&p.y==ey) {ans+=dis[ex][ey]; return ;}
;i<;i++)
{
int fx=p.x+xx[i],fy=p.y+yy[i];
||fy<||fx>n||fy>m||!map[fx][fy]) continue;
) continue;
dis[fx][fy]=dis[p.x][p.y]+;
que.x=fx,que.y=fy;
q.push(que);
}
}
flag=true;
}
int main()
{
n=read(),m=read();
;i<=n;i++)
;j<=m;j++)
{
cin>>ch;
;
;
if(ch>='A'&&ch<='Z')
{
sx=ch-;
sum=max(sx,sum);
node[sx].x=i;
node[sx].y=j;
}
}
;i<=sum;i++)
{
sx=node[i].x,sy=node[i].y;
if(i==sum)
ex=node[].x,ey=node[].y;
else
ex=node[i+].x,ey=node[i+].y;
bfs(sx,sy);
}
if(flag) printf("Impossible");
else printf("%d",ans);
;
}
codevs——3344 迷宫的更多相关文章
- codevs 3344 迷宫
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 小刚在迷宫内,他需要从A点出发,按顺序经过B,C,D……,到达最后一个点,再回到A ...
- codevs 1215 迷宫
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,-,xn,以及一个整数 k(k<n).从 n ...
- BFS简单题套路_Codevs 1215 迷宫
BFS 简单题套路 1. 遇到迷宫之类的简单题,有什么行走方向的,先写下面的 声明 ; struct Status { int r, c; Status(, ) : r(r), c(c) {} // ...
- Codevs 1337 银行里的迷宫
1337 银行里的迷宫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 传送门 题目描述 Description 楚楚每一次都在你的帮助下过了一关又一关(比如他开 ...
- Codevs 2855 游乐园的迷宫
2855 游乐园的迷宫 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 迷宫可是每个游乐园必不可少的项目,菜菜当然是要尝试一下啦. ...
- codevs——T1337 银行里的迷宫
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 楚楚每一次都在你的帮助下过了一关又一关(比如他开宴会). ...
- Codevs 1629 01迷宫
1629 01迷宫 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一个由01组成的n*n格迷宫,若你位于一格0上,那么你可 ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- codevs 2822 爱在心中
codevs 2822 爱在心中 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description “每个人都拥有一个梦,即使彼此不相同, ...
随机推荐
- lavarel 添加自定义辅助函数
Laravel 提供了很多 辅助函数,有时候我们也需要创建自己的辅助函数. 必须 把所有的『自定义辅助函数』存放于 bootstrap 文件夹中. 并在 bootstrap/app.php 文件的最顶 ...
- poj 3262 牛毁坏花问题 贪心算法
题意:有n头牛,每头牛回去都需要一定时间,如果呆在原地就会毁坏花朵.问:怎么安排使得毁坏的花朵最少? 思路: 拉走成本最高的. 什么是成本?毁坏花朵的数量. 例如有两种排序 (这里用(a,b)表示 ...
- Android开发——Android 6.0权限管理机制详解
.Android 6.0运行时主动请求权限 3.1 检测和申请权限 下面的例子介绍上面列出的读写SD卡的使用例子,可以使用以下的方式解决: public boolean isGrantExterna ...
- git仓库删除所有提交历史记录
stackoverflow原问题地址:http://stackoverflow.com/questions/13716658/how-to-delete-all-commit-history-in-g ...
- 【ajax】全面总结
Ajax 的全面总结 2017-11-03 山外de楼 JavaScript Ajax在前端开发中有着举足轻重的地位,关于Ajax的使用和注意事项一直是一个重要的话题,借此机会,本文希望对Ajax做一 ...
- Java-一个数组中的元素复制到另一个数组
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length).其中五个参数分别表示为: ...
- DataContext.ExecuteQuery的两种方法调用
ExecuteQuery主要用于DataContext类直接执行SQL语句的查询,在MSDN上有两种执行方法,下面为两种方法的不同调用: 1.ExecuteQuery<TResult>(S ...
- Spring core resourc层结构体系及JDK与Spring对classpath中资源的获取方式及结果对比
1. Spring core resourc层结构体系 1.1. Resource相关结构体系 1.2. ResourceLoader相关体系 2. JDK与Spring对classpath中资源的获 ...
- 触屏版轻量级分页插件jqPagination分享
说到HTML5和jquery上的分页问题,优秀的分页插件网上一抓一大把,然而同时适合兼容在Ipad和手机端的网站分页却不是特别多. 或许有人会说,触屏现在流行下拉底部后加载下一页内容,类似微博和QQ空 ...
- 装箱I(01背包)
描述 给两个有一定容量的箱子,往里面装宝石(宝石总容量不能超过箱子容量),不同的宝石有不同的容量和价值.求两个箱子里最大宝石的价值. 输入 line 1: Input n; n:表示宝石数量 ...