HDU2425:Hiking Trip(简单bfs,优先队列实现)
题目: 传送门
题意很简单就不解释了,水题一道。
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> typedef __int64 ll; #define inf 0x3f3f3f3f #include <math.h> #include <queue> using namespace std; struct node { int x,y,ans; bool operator<(const node &a)const //从小到大排序 { return ans>a.ans; } }; node st,ff; int n,m,P,S,T,s,e,s2,e2,v[22][22]; char a[22][22]; int fx[]= {1,-1,0,0}; int fy[]= {0,0,1,-1}; int main() { int sum,K=0; while(scanf("%d%d",&n,&m)!=EOF) { priority_queue<node>q; while(!q.empty()) q.pop(); sum=-1; scanf("%d%d%d",&P,&S,&T); for(int i=0; i<n; i++) scanf("%s",a[i]); scanf("%d%d%d%d",&s,&e,&s2,&e2); memset(v,0,sizeof(v)); st.x=s,st.y=e,st.ans=0; v[s][e]=1; q.push(st); while(!q.empty()) { ff=q.top(); q.pop(); if(ff.x==s2&&ff.y==e2) { sum=ff.ans; break; } for(int i=0; i<4; i++) { st.x=ff.x+fx[i]; st.y=ff.y+fy[i]; if(v[st.x][st.y]==0&&a[st.x][st.y]!='@') { if(a[st.x][st.y]=='T') { st.ans=ff.ans+T; v[st.x][st.y]=1; q.push(st); } else if(a[st.x][st.y]=='.') { st.ans=ff.ans+S; v[st.x][st.y]=1; q.push(st); } else if(a[st.x][st.y]=='#') { st.ans=ff.ans+P; v[st.x][st.y]=1; q.push(st); } } } } printf("Case %d: %d\n",++K,sum); } return 0; }
分类:
图论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构