为了准备算法考试刷的,想明确一点即可,全部的传送门相当于一个点,当遇到一个传送门的时候,把全部的传送门都压入队列进行搜索

贴代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std; const int MAXN = 5000+50;
int r,c,f,si,sj,ei,ej,ans;
int mat[MAXN][MAXN]; struct Node
{
Node(int i=0,int j=0,int v=0){x=i;y=j;val=v;}
int x,y;
int val;
}; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//left up down right void init()
{
char cc;
ans=-1;
getchar();
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
cc=getchar(); //putchar(cc);
if(cc == 'Y'){mat[i][j]=2;si=i,sj=j;continue;}
if(cc == 'C'){mat[i][j]=3;ei=i;ej=j;continue;}
if(cc == '*'){mat[i][j]=0;continue;}
if(cc == '#'){mat[i][j]=-1;continue;}
if(cc == 'P'){mat[i][j]=1;continue;}
}
getchar();
}
} int legal(Node &s)
{
if(s.x>=0 && s.y>=0 && s.x<r && s.y <c)
return 1;
return 0;
} int bfs()
{
queue<Node>q;
Node st(si,sj),e;
q.push(st);
mat[si][sj]=-2;
while(!q.empty())
{
st=q.front();
//if(mat[st.x][st.y]==3)return st.val; chao sha bi
if(st.x==ei && st.y == ej)return st.val;
q.pop();
for(int k=0;k<4;k++)
{
e.x=st.x+dir[k][0];
e.y=st.y+dir[k][1];
e.val=st.val;
if(legal(e) && mat[e.x][e.y]>=0 && mat[e.x][e.y]!=2)
{
if(!mat[e.x][e.y])//*
{
e.val=st.val+f;
q.push(e);
}
if(mat[e.x][e.y]==1)
{
for(int ii=0;ii<r;ii++)
{
for(int jj=0;jj<c;jj++)
{
if(mat[ii][jj]==1)
{
mat[ii][jj]=-2;
q.push(Node(ii,jj,e.val));
} }
}
}
if(mat[e.x][e.y]>1)q.push(e);
mat[e.x][e.y]=-2;
}
} }
return -1;
}
int main()
{
//freopen("hdu4038.txt","r",stdin);
while(scanf("%d%d%d",&r,&c,&f)!=EOF)
{
init();
ans=bfs();
if(ans == -1)printf("Damn teoy!\n");
else
printf("%d\n",ans);
}
return 0;
}

hdu 4308 Saving Princess claire_ BFS的更多相关文章

  1. hdu 4308 Saving Princess claire_

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4308 Saving Princess claire_ Description Princess cla ...

  2. HDU 4308 Saving Princess claire_(简单BFS)

    求出不使用P点时起点到终点的最短距离,求出起点到所有P点的最短距离,求出终点到所有P点的最短距离. 答案=min( 不使用P点时起点到终点的最短距离, 起点到P的最短距离+终点到P的最短距离 ) #i ...

  3. BFS(最短路) HDOJ 4308 Saving Princess claire_

    题目传送门 题意:一个(r*c<=5000)的迷宫,起点'Y‘,终点'C',陷阱‘#’,可行路‘*’(每走一个,*cost),传送门P,问Y到C的最短路 分析:一道最短路问题,加了传送门的功能, ...

  4. HDU 4308 BFS Saving Princess claire_

    原题直通车:HDU 4308 Saving Princess claire_ 分析: 两次BFS分别找出‘Y’.‘C’到达最近的‘P’的最小消耗.再算出‘Y’到‘C’的最小消耗,比较出最小值 代码: ...

  5. Saving Princess claire_(hdu 4308 bfs模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4308 Saving Princess claire_ Time Limit: 2000/1000 MS (Jav ...

  6. 2012 #1 Saving Princess claire_

    Saving Princess claire_ Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

  7. hdu----(4308)Saving Princess claire_(搜索)

    Saving Princess claire_ Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  8. HDU 5025 Saving Tang Monk --BFS

    题意:给一个地图,孙悟空(K)救唐僧(T),地图中'S'表示蛇,第一次到这要杀死蛇(蛇最多5条),多花费一分钟,'1'~'m'表示m个钥匙(m<=9),孙悟空要依次拿到这m个钥匙,然后才能去救唐 ...

  9. ZOJ 3369 Saving Princess

    Saving Princess Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on ZJU. Origina ...

随机推荐

  1. 区间Dp 暴力枚举+动态规划 Hdu1081

    F - 最大子矩形 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Des ...

  2. 安卓开发28:自定义View类

    自定义View类 通过自定义View类,可以自定义复杂的,按照自己需求的控件. 一个简单的例子 mainActivity.java 这个里面就是最普通的代码,但是给自定义的控件加上了一个onclick ...

  3. nginx 源码安装

    安装环境: 操作系统:Ubuntu 12.04 Nginx:     V1.4.2 PCRE:    V8.33 zlib:         V1.2.8 下载上述源包到当前用户主目录(本机:/hom ...

  4. Object.Instantiate 实例

    static function Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object ...

  5. .Net——使用.net内置处理程序处理自己定义节点Demo

    在.net中.由于对不同的节点,都相应着类去对它进行处理,.net里面为了方便.已经内置了一些类供我们使用.使我们在读取配置文件时.不必自己去定义类去处理自己定义的自己定义节点. 以下我们写了这样一个 ...

  6. 佳文分享:CAP定理

    1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理 ...

  7. 在 Java 项目中解压7Zip特殊压缩算法文件

    1 问题描写叙述 Java Web 后端下载了一个经特殊算法压缩的 zip 文件,由于不能採用 java 本身自带的解压方式,必须採用 7Zip 来解压.所以,提到了本文中在 java web 后端调 ...

  8. 初始化openwrt的rootpassword

    更改openwrt源代码 shadow 文件 package/base-files/files/etc/shadow shadow 文件參考http://blog.csdn.net/u01164188 ...

  9. bzoj1497(最小割)

    传送门:最大获利 题意:建立n个中转站,每个花费P[i],有m个用户,使用Ai和Bi中转站可获利Ci,问最终建立哪几个中转站使获利最大? 分析:根据最大权闭合图建图,用户群和中转站为带权的点集,用户群 ...

  10. PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)

    1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vecto ...