AOJ 0558 Chess http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0558

   在H * W的地图上有N个奶酪工厂,每个工厂分别生产硬度为1-N的奶酪。有一只老鼠准备从出发点吃遍每一个工厂的奶酪。老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次),且老鼠只能吃硬度不大于当前体力值的奶酪。

老鼠从当前格到上下左右相邻的无障碍物的格需要时间1单位,有障碍物的格不能走。走到工厂上时即可吃到该工厂的奶酪,吃奶酪时间不计。问吃遍所有奶酪最少用时。

输入:第一行三个整数H(1 <= H <= 1000)、W(1 <= W <=1000)、N(1 <= N <= 9),之后H行W列为地图, “.“为空地, ”X“为障碍物,”S“为老鼠洞, 1-N代表硬度为1-N的奶酪的工厂。输出最少用时。

样例输入:

4 5 2
.X..1
....X
.XX.S
.2.X.

样例输出:

12
#include<iostream>
#include<queue>
using namespace std; typedef struct{
int x;
int y;
}P;//表示坐标 char graph[][];
P aim[];
P s,g;//s起点,g终点
int N,W,H;
int vis[][]; //用来存储距离
int dx[]={,,-,},dy[]={,,,-}; int bfs(P s,P g); int main(){
int i,j,t,step=;
cin>>H>>W>>N; for(i=;i<H;i++)
for(j=;j<W;j++){
cin>>graph[i][j];
if(graph[i][j]<=''&&graph[i][j]>=''){
t=graph[i][j]-'';
aim[t].x=i;
aim[t].y=j;
} //把1-N的坐标保存在 aim数组中
else if(graph[i][j]=='S'){
s.x=i;
s.y=j;
graph[i][j]='.';
}//得到最初的起点
} for(i=;i<=N;i++){
g.x=aim[i].x;
g.y=aim[i].y;//1-N ,从小到大,每次把一个 作为终点
step+=bfs(s,g);
s.x=g.x;
s.y=g.y;//到达这个终点后变终点为起点
graph[g.x][g.y]='.';
} cout<<step<<endl;
} int bfs(P s,P g){
queue<P> que;
P n; for(int i=;i<H;i++)
for(int j=;j<W;j++)
vis[i][j]=-; que.push(s);
vis[s.x][s.y]=; while(que.size()){ P p=que.front();
que.pop();
if(p.x==g.x&&p.y==g.y)
break; for(int i=;i<;i++){
n.x=p.x+dx[i];
n.y=p.y+dy[i];//向四方漫射
if(<=n.x&&n.x<H&&<=n.y&&n.y<W&&graph[n.x][n.y]!='X'&&vis[n.x][n.y]==-){
que.push(n);
vis[n.x][n.y]=vis[p.x][p.y]+;
}
}
}
return vis[g.x][g.y];
}
 

BFS AOJ 0558 Chess的更多相关文章

  1. AOJ 0558 Cheese【BFS】

    在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次), ...

  2. AOJ 0558 Cheese

    Cheese Time Limit : 8 sec, Memory Limit : 65536 KB チーズ (Cheese) 問題 今年も JOI 町のチーズ工場がチーズの生産を始め,ねずみが巣から ...

  3. AOJ 0558 广度优先搜索

    题意:在 H * W 的地图里有 N 个工厂,每个工厂分别生产硬度为1-N 的奶酪,有一只老鼠准备把所有奶酪都吃完.老鼠的初始体力值为1,每吃一个奶酪体力值加 1.已知老鼠不能吃硬度大于当前体力值的奶 ...

  4. HDU_1401——分步双向BFS,八进制位运算压缩,map存放hash

    Problem Description Solitaire is a game played on a chessboard 8x8. The rows and columns of the ches ...

  5. ProgrammingContestChallengeBook

    POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...

  6. AOJ 0121: Seven Puzzle【BFS】

    From: AOJ 0121 思路:与前几题的bfs不同,这次的bfs没有明确的移动对象,看似任意一个数都可以当成对象移动.这时我们只需要抓住一个格子就行,比如我们把0作为移动对象,那么0在地图中漫游 ...

  7. AOJ.865 青铜莲花池 (BFS)

    AOJ.865 青铜莲花池 (BFS) 题意分析 典型的BFS 没的说 代码总览 #include <iostream> #include <cstdio> #include ...

  8. AOJ.866 飞越原野 (三维BFS)

    AOJ.866 飞越原野 (三维BFS) 题意分析 点我挑战题目 相比于普通的BFS,要多一维来记录当前剩余的体力.而且还要额外的一层循环来处理,飞过的路程. 代码总览 #include <io ...

  9. AOJ 0121: Seven Puzzle (BFS DP STL 逆向推理)(转载)

    转载自:  http://m.blog.csdn.net/blog/Enjoying_Science/42008801 题目链接:http://acm.hust.edu.cn/vjudge/probl ...

随机推荐

  1. 示例Oracle 10.2.0.1.0升级到10.2.0.4.0一例

    1.查看当前系统版本 [oracle@std Disk1]$ sqlplus '/as sysdba' SQL*Plus: Release - Production on Thu Jan :: Cop ...

  2. jquery回车执行某个事件

    这里用到的是在查询框中输入数据后直接回车直接查询. //回车执行查询事件(执行class='btn-query'的单击事件) $(document).keydown(function (event) ...

  3. java 中的2个接口 Comparable和Comparator

    像Integer.String这些类型的数据都是已经实现Comparable接口的,所以对这些类型可以直接通过Arrays.sort(...)和Collections.sort(...)方法进行排序. ...

  4. Bash中各种以$开头的特殊变量的含义

    $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参 ...

  5. 响应式网站通用css

    /* core.css v1.1 | MIT License | corecss.io */ html { font-family: sans-serif; font-size: 100%; line ...

  6. Registration Code

    [sublime text 3] Michael BarnesSingle User LicenseEA7E-8213858A353C41 872A0D5C DF9B2950 AFF6F667C458 ...

  7. Selenium2学习-038-firefox、webdriver版本不对称问题解决:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055

    今天有个朋友在群里问,为何脚本运行不通过,其脚本操作步骤简单描述如下: 1.启动火狐浏览器 2.打开百度 3.查询框输入关键字 4.点击按钮[百度一下] 脚本挺简单的,其给出的应用报错信息如下所示: ...

  8. Linux下查看某个软件安装路径

    1:如果包是通过yum或者rpm方式安装 [root@localhost yum.repos.d]# rpm -qa //找出系统所有的包,找到对应的文件名 [root@localhost yum.r ...

  9. ios - 自动布局框架编写(更多功能完善中)

    之前用的storyboard以及xib挺多的,最近看到朋友用第三方框架---自动布局约束框架在添加控件约束的时候老实报错.后来自己就试了试纯代码创建以及约束控件.但是纯代码约束一个控件还可以,如果约束 ...

  10. VS 创建虚拟目录失败,映射到其他文件夹!

    今天,改一哥们项目!立马,问了一下原因.支支吾吾的气死LZ! 算了,就不信自己琢磨不出来!哼 找了半天,坑爹的是在Web.csproj文件中! 用txt打开,发现这个东东! <UseIIS> ...