codeforces329B(bfs)
时间:2022-07-28
本文章向大家介绍codeforces329B(bfs),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意描述
给定RxC的网格,网格中存在猎人,询问走到终点前要和多少组猎人碰面
思路
由于猎人事先知道我们行走的路线,所以猎人们可以先走到终点前等待,可以使用bfs预处理出终点到各个点之间的距离,如果猎人到终点的距离小于等于我们从起点到终点的距离,那么一点可以相遇,最后遍历一遍即可。
代码
#include<bits/stdc++.h>
#define x first
#define y second
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<char,char> PCC;
typedef long long LL;
const int N=1010;
const int M=150;
const int INF=0x3f3f3f3f;
const int MOD=998244353;
char g[N][N];
int d[N][N];
int n,m,stx,sty,edx,edy;
int dx[4]={0,1,-1,0},dy[4]={1,0,0,-1};
void bfs(){
queue<PII> q;
memset(d,INF,sizeof d);
d[edx][edy]=0;
q.push({edx,edy});
while(q.size()){
PII t=q.front();q.pop();
for(int i=0;i<4;i++){
int gx=t.x+dx[i],gy=t.y+dy[i];
if(gx>=0 && gy>=0 && gx<n && gy<m && d[gx][gy]==INF && g[gx][gy]!='T'){
d[gx][gy]=d[t.x][t.y]+1;
q.push({gx,gy});
}
}
}
}
void solve(){
cin>>n>>m;
for(int i=0;i<n;i++) cin>>g[i];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(g[i][j]=='S'){
stx=i;
sty=j;
}
if(g[i][j]=='E'){
edx=i;
edy=j;
}
}
}
bfs();
int res=d[stx][sty];
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(d[i][j]<=res && g[i][j]>'0' && g[i][j]<='9'){
ans+=g[i][j]-'0';
}
}
}
cout<<ans<<endl;
}
int main(){
IOS;
solve();
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php实现多站点共用session实现单点登录的方法详解
- php实例化一个类的具体方法
- PHP MVC框架中类的自动加载机制实例分析
- smarty模板的使用方法实例分析
- 关于Yii中模型场景的一些简单介绍
- php文件包含的几种方式总结
- 一个基于Laravel5的个人博客系统:Lablog搭建教程
- php快速导入大量数据的实例方法
- Laravel 模型关联基础教程详解
- yunBT:一个基于TP3.1的多用户BT离线下载程序,支持在线播放
- 使用Chihaya搭建一个可以屏蔽迅雷的Tracker
- [jio本]Debian9一键安装各种下载工具
- php实现QQ小程序发送模板消息功能
- 微软自家沙盒 Sandbox公布
- php DES加密算法实例分析