NYOJ 1100 WAJUEJI which home strong!(BFS+优先队列)
来源:互联网 发布:淘宝手机壳货源 编辑:程序博客网 时间:2024/04/27 05:50
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1100
解题思路:广搜+优先队列
自定义优先级用优先队列存最小花费,更新的时候是加s[i][j]-'A'+1。就是这样,没有什么坑点。
AC代码:
#include<bits/stdc++.h>#define mann 105using namespace std;int n,m;int dx[4]= {0,0,-1,1};int dy[4]= {-1,1,0,0};char s[mann][mann];int vis[mann][mann];struct node{ int x,y,temp; friend bool operator < (node a,node b)//自定义优先级 { return a.temp>b.temp;//钱小的优先 }};priority_queue<node>q;//使用优先队列存最小花费int bfs(int x1,int y1,int x2,int y2){ int xx,yy; node a= {x1,y1,0}; q.push(a); vis[x1][y1]=1; while(!q.empty()) { a=q.top(); if(a.x==x2&&a.y==y2) break; q.pop(); for(int i=0; i<4; i++) { xx=a.x+dx[i]; yy=a.y+dy[i]; if(xx>=0&&xx<n&&yy>=0&&yy<m&&!vis[xx][yy]&&s[xx][yy]!='#') { node b; if(s[xx][yy]=='l')//如果当前到达目的地,不同再花费 b= {xx,yy,a.temp}; else//否则,加上当前花费 b= {xx,yy,a.temp+s[xx][yy]-'A'+1}; q.push(b); vis[xx][yy]=1; } } } if(q.empty()) return -1; while(!q.empty()) q.pop(); return a.temp;}int main(){ int t; scanf("%d",&t); while(t--) { memset(vis,0,sizeof(vis)); int x1,y1,x2,y2; scanf("%d%d",&n,&m); for(int i=0; i<n; i++) scanf("%s",s[i]); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { // printf("%c",s[i][j]); if(s[i][j]=='s') x1=i,y1=j; if(s[i][j]=='l') x2=i,y2=j; } // printf("\n"); } // printf("%d*%d %d*%d\n",x1,y1,x2,y2); int ans=bfs(x1,y1,x2,y2); printf("%d\n",ans); } return 0;}
0 0
- NYOJ 1100 WAJUEJI which home strong!(BFS+优先队列)
- NYOJ 1100 WAJUEJI which home strong(BFS+优先队列)
- NYOJ--1100 WAJUEJI which home strong!【BFS,优先队列】
- NYOJ - 1100 - WAJUEJI which home strong!(BFS变形,优先队列)
- nyoj 1100 WAJUEJI which home strong!( BFS+优先队列)
- NYOJ 题目1100 WAJUEJI which home strong!(BFS,优先队列)
- NYOj-WAJUEJI which home strong!-BFS + 优先队列
- nyoj-1100-广搜+优先队列-WAJUEJI which home strong!
- WAJUEJI which home strong!(BFS+优先队列)
- nyoj--1100--WAJUEJI which home strong!(bfs)
- NYOJ 1100-WAJUEJI which home strong!【bfs】
- NYOJ 1100 WAJUEJI which home strong! (BFS)
- NYOJ1100【WAJUEJI which home strong!】BFS+优先队列
- nyoj 1100 WAJUEJI which home strong! 【简单BFS】
- BFS+优先级队列-WAJUEJI which home strong!
- nyoj 1100 WAJUEJI which home strong!
- NYOJ 1100 WAJUEJI which home strong!
- NYOJ--1100--WAJUEJI which home strong!
- Android 7.0 Nougat(牛轧糖)---对开发者来说
- Ubuntu搭建NFS
- storm集群安装配置
- const 关键字基础用法
- length和length()区分
- NYOJ 1100 WAJUEJI which home strong!(BFS+优先队列)
- 生成简单的二维码
- 【强烈推荐】Zend_xmlrpc构建webservice服务器接口教程 Calling parameters do not match signature
- 在线支付
- struts2学习-3
- w3school SQL教程整理
- spring aop 中切面表达式规则
- 通配符的匹配很全面, 但无法找到元素 'http' 的声明
- 字符编码一:Unicode 与 UTF-8之间的关系