纯BFS+优先队列扩展。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <string.h>
#include <queue>
using namespace std; bool vis[5100];
char str[5100]; struct point{
int x,y;
int cost;
bool operator < (const point &a)const{
return cost>a.cost;
}
}st,en,passort[550],tmp,pushed;
int pp;
priority_queue<point>que;
int dir[4][2]={
{0,1},{0,-1},{1,0},{-1,0}
}; int work(int r,int c,int cost){
memset(vis,false,sizeof(vis));
int x,y;
st.cost=0;
que.push(st);
vis[st.x*c+st.y]=true;
while(!que.empty()){
tmp=que.top();
que.pop();
for(int i=0;i<4;i++){
x=tmp.x+dir[i][0],y=tmp.y+dir[i][1];
if(x>=0&&x<r&&y>=0&&y<c){
if(str[x*c+y]!='#'&&!vis[x*c+y]){
if(str[x*c+y]=='*'){
pushed.x=x;
pushed.y=y;
pushed.cost=tmp.cost+cost;
que.push(pushed);
vis[x*c+y]=true;
}
else if(str[x*c+y]=='P'){
for(int ps=0;ps<pp;ps++){
pushed.x=passort[ps].x;
pushed.y=passort[ps].y;
pushed.cost=tmp.cost;
que.push(pushed);
vis[x*c+y]=true;
}
}
else if(str[x*c+y]=='C')
return tmp.cost;
}
}
}
}
return -1;
} int main(){
int r,c,cost;
while(scanf("%d%d%d",&r,&c,&cost)!=EOF){
getchar();
int beg=0;
pp=0;
for(int i=0;i<r;i++){
gets(str+beg);
for(int k=beg;k<beg+c;k++)
if(str[k]=='Y'){
st.x=i;
st.y=k-beg;
}
else if(str[k]=='C'){
en.x=i;
en.y=k-beg;
}
else if(str[k]=='P'){
passort[pp].x=i;
passort[pp].y=k-beg;
pp++;
}
beg+=c;
}
int ans=work(r,c,cost);
if(ans==-1) printf("Damn teoy!\n");
else
printf("%d\n",ans);
while(!que.empty())
que.pop();
}
return 0;
}

  

HDU 4308 Contest 1的更多相关文章

  1. HDU 4308 BFS Saving Princess claire_

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

  2. hdu 4308 Saving Princess claire_

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

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

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

  4. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  5. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  6. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  7. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  8. hdu 4308 Saving Princess claire_ BFS

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

  9. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

随机推荐

  1. [Design]Adobe CS6 2%错误问题

    错误描述:FATAL: Payload '{3F023875-4A52-4605-9DB6-A88D4A813E8D} Camera Profiles Installer 6.0.98.0' info ...

  2. Solr 搜索的过程和所须要的參数

    一个典型的搜索处理过程,以及所须要的參数例如以下: qt:指定一个RequestHandler,即/select.缺省是使用DisMax RequestHandler defType:选择一个quer ...

  3. XTU1201:模和除

    题目描写叙述 两个整数x和y,满足1<=x<=a,1<=y<=b 且x%y等于x/y的x和y的对数有多少? x%y是x除以y的余数, x/y是x除以y的商,即整数除. 输入 不 ...

  4. UVA - 12230 Crossing Rivers 概率期望

    You live in a village but work in another village. You decided to follow the straight path between y ...

  5. ComponentName

    ComponentName,顾名思义,就是组件名称,通过调用Intent中的setComponent方法,我们可以打开另外一个应用中的Activity或者服务. 实例化一个ComponentName需 ...

  6. Vue读书笔记:关于$ref、props和$emit

    1.props实现父组件向子组件传递数据 子组件可以通过props接收到来自父组件的数据,并且是单向绑定的.也就是说,数据不能从子组件反向传递. 2.$ref实现子组件向父组件通信 来自官方非常难理解 ...

  7. 15.Linux的文件结构

    linux的文件结构和windows不同,没有分区,是树形的结构: /etc:存放配置文件 /lib:编译程序需要的函数库 /usr:包含所有其他内容,比如内核在/usr/src中,/usr/bin存 ...

  8. linux服务器网站安全狗安装教程

    1.下载服务器安全狗和服务器网站安全狗,选择好版本.http://download.safedog.cn/safedog_linux64.tar.gz 这个是网站安全狗的下载地址2.登录centos进 ...

  9. TCP和UDP的具体区别

    TCP和UDP的最完整的区别 TCP UDP TCP与UDP基本区别: 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少: 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UD ...

  10. ROS-Gazebo文件标签解读

    前言:Gazebo是一个三维机器人仿真器,它是独立的软件,支持ROS. 标签 功能 <gazebo> 设置Gazebo仿真的参数 <mu1>, <mu2> 设置摩擦 ...