题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26772

思路:注意判重就行,开个6维数组记录3个robots的位置,然后要注意的就是不能多个robots同时在一个格子上,一开始没注意到这点!

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 11 struct Point{
int x,y;
}; struct Node{
Point p[];
int step;
}st; char map[MAXN][MAXN];
bool mark[MAXN][MAXN][MAXN][MAXN][MAXN][MAXN];
int n,dir[][]={{-,},{,},{,-},{,}}; void bfs()
{
memset(mark,false,sizeof(mark));
queue<Node>que;
st.step=;
que.push(st);
mark[st.p[].x][st.p[].y][st.p[].x][st.p[].y][st.p[].x][st.p[].y]=true;
while(!que.empty()){
Node q,pp=que.front();
que.pop();
if(map[pp.p[].x][pp.p[].y]=='X'&&map[pp.p[].x][pp.p[].y]=='X'&&map[pp.p[].x][pp.p[].y]=='X'){
printf("%d\n",pp.step);
return ;
}
for(int i=;i<;i++){
for(int j=;j<=;j++){
q.p[j].x=pp.p[j].x+dir[i][],q.p[j].y=pp.p[j].y+dir[i][];
if(q.p[j].x<||q.p[j].x>=n||q.p[j].y<||q.p[j].y>=n){
q.p[j].x=pp.p[j].x,q.p[j].y=pp.p[j].y;
}else if(map[q.p[j].x][q.p[j].y]=='#'){
q.p[j].x=pp.p[j].x,q.p[j].y=pp.p[j].y;
}
}
//robots不能在同一个格子上
for(int l=;l<=;l++){
for(int j=;j<=;j++){
for(int k=;k<=;k++)if(j!=k){
if(q.p[j].x==q.p[k].x&&q.p[j].y==q.p[k].y)q.p[j].x=pp.p[j].x,q.p[j].y=pp.p[j].y;
}
}
}
if(!mark[q.p[].x][q.p[].y][q.p[].x][q.p[].y][q.p[].x][q.p[].y]){
mark[q.p[].x][q.p[].y][q.p[].x][q.p[].y][q.p[].x][q.p[].y]=true;
q.step=pp.step+;
que.push(q);
}
}
}
puts("trapped");
} int main()
{
int _case,num,t=;
scanf("%d",&_case);
while(_case--){
scanf("%d",&n);
num=;
for(int i=;i<n;i++){
scanf("%s",map[i]);
for(int j=;j<n;j++){
if(map[i][j]=='A'||map[i][j]=='B'||map[i][j]=='C'){
st.p[num].x=i,st.p[num].y=j;
num++;
}
}
}
printf("Case %d: ",t++);
bfs();
}
return ;
}

loj 1055(bfs)的更多相关文章

  1. loj 1377 (bfs)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1377 思路:这道题只要处理好遇到"*"这种情况就可以搞定了.我们可 ...

  2. loj 1185(bfs)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26898 思路:我们可以给定有直接边相连的两点的距离为1,那么就是求 ...

  3. loj 1165(bfs+康托展开)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26879 思路:题目意思很简单,就是通过一些位置的交换,最后变成有序 ...

  4. loj 1426(dfs + bfs)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1426 思路:首先我们预处理出每一个"*"在某一方向上最终能到达的位 ...

  5. loj 1046(bfs)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26766 思路:由于数据不是很大,我们可以枚举骑士最后聚集的位置,然 ...

  6. LOJ 3057 「HNOI2019」校园旅行——BFS+图等价转化

    题目:https://loj.ac/problem/3057 想令 b[ i ][ j ] 表示两点是否可行,从可行的点对扩展.但不知道顺序,所以写了卡时间做数次 m2 迭代的算法,就是每次遍历所有不 ...

  7. 「LOJ#6121」「网络流 24 题」孤岛营救问题(BFS

    题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形 ...

  8. LOJ #2877. 「JOISC 2014 Day2」交朋友 并查集+BFS

    这种图论问题都挺考验小思维的. 首先,我们把从 $x$ 连出去两条边的都合并了. 然后再去合并从 $x$ 连出去一条原有边与一条新边的情况. 第一种情况直接枚举就行,第二种情况来一个多源 bfs 即可 ...

  9. LOJ #2876. 「JOISC 2014 Day2」水壶 BFS+最小生成树+倍增LCA

    非常好的一道图论问题. 显然,我们要求城市间的最小生成树,然后查询路径最大值. 然后我们有一个非常神的处理方法:进行多源 BFS,处理出每一个城市的管辖范围. 显然,如果两个城市的管辖范围没有交集的话 ...

随机推荐

  1. rsync+inotify 实现服务器之间目录文件实时同步(转)

    软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...

  2. Android Studio-设置override及getter/setter方法

    默认是Alt+Insert,可以修改成与Eclipse保持一致,Alt+Shift+S

  3. Mac OS X中打zip包时去除.DS_Store等指定文件

    在Finder中的Compress “…”很好用,但是也有烦恼的时候,经常打包会包含进来一些.DS_Store文件,.DS_Store是苹果系统中保存当前目录基本信息的文件,包括图标的位置,显示方式等 ...

  4. 二分图最大匹配的K&#246;nig定理及其证明

     二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有.    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...

  5. 探讨关于C#中Foreach的本质

    一.为什么数组和集合可以使用foreach遍历 01. 因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerator() 02.数组类型是从抽象基类型 Array ...

  6. js打印(控件)及多种方式

    非常好用的LODOP打印控件 Lodop打印控件简单使用方法 1.安装. 2.调用LodopFuncs.js文件. 3.增加OBJECT对象 <script language="jav ...

  7. index and polymorphic

    http://guides.rubyonrails.org/association_basics.html#polymorphic-associations class CreateStars < ...

  8. maven最齐全配置pom.xml

    0001<project xmlns="http://maven.apache.org/POM/4.0.0"0002 0003xmlns:xsi="http://w ...

  9. 菜鸟带你飞______DP基础26道水题

    DP 158:11:22 1205:00:00   Overview Problem Status Rank (56) Discuss Current Time: 2015-11-26 19:11:2 ...

  10. android.os.BadParcelableException: ClassNotFoundException when unmarshalling:解决办法

    例如在用AlarmManager的时候 AlarmManager alarmMgr = (AlarmManager) mContext .getSystemService(Context.ALARM_ ...