[kuangbin带你飞]专题一 简单搜索 N - Find a way
来源:互联网 发布:天刀萝莉少女捏脸数据 编辑:程序博客网 时间:2024/06/01 07:12
分析:bfs水题,跑两次即可
code:
#include <cstdio>#include <queue>#include <iostream>using namespace std;typedef long long ll;typedef struct{ ll x,y; ll wal;}data;data Y,M;ll n,m,ansY,ansM;ll ans_[205][205],vis[205][205],dx[]={1,0,-1,0},dy[]={0,1,0,-1};char maze[205][205];void init(){ memset(ans_,0,sizeof ans_); memset(vis,0,sizeof vis); memset(maze,0,sizeof maze); ansY=0,ansM=0; for(int i=1;i<=n;i++) scanf("%s",maze[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(maze[i][j]=='Y') { Y.x=i; Y.y=j; Y.wal=0; } if(maze[i][j]=='M') { M.x=i; M.y=j; M.wal=0; } } }void bfs(){ queue <data> q; q.push(Y); data nex; vis[Y.x][Y.y]=1; while(q.size()) { data now=q.front(); q.pop(); ll x=now.x,y=now.y; if ( maze[x][y]== '@' ) ans_[x][y]=now.wal; for(int i=0;i<4;i++) { x=now.x+dx[i],y=now.y+dy[i]; nex.wal=now.wal+11; if( 1<=x&&x<=n&&1<=y&&y<=m) if(vis[x][y]==0) if(maze[x][y]!='#') { vis[x][y]=1; nex.x=x,nex.y=y; q.push(nex); } } }}void bfs_(){ queue <data> q; q.push(M); data nex; vis[M.x][M.y]=1; while(q.size()) { data now=q.front(); q.pop(); ll x=now.x,y=now.y; if ( maze[x][y]== '@' ) ans_[x][y]+=now.wal; for(int i=0;i<4;i++) { x=now.x+dx[i],y=now.y+dy[i]; nex.wal=now.wal+11; if( 1<=x&&x<=n&&1<=y&&y<=m) if(vis[x][y]==0) if(maze[x][y]!='#') { vis[x][y]=1; nex.x=x,nex.y=y; q.push(nex); } } }}void solve(){ bfs(); memset(vis,0,sizeof vis); bfs_(); ll ans=1000000; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(ans>ans_[i][j]&& ans_[i][j]) ans=ans_[i][j]; } cout<<ans<<endl;}int main(void){ while(cin>>n>>m) { init(); solve(); }}
0 0
- [kuangbin带你飞]专题一 简单搜索N - Find a way(HDU 2612)
- [kuangbin带你飞]专题一 简单搜索 N - Find a way HDU2612
- [kuangbin带你飞]专题一 简单搜索 N - Find a way
- HDU 2612 find a way (kuangbin带你飞 专题一:简单搜索)
- HDU 2612 Find a way([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题一 简单搜索 N
- [kuangbin带你飞]专题一 简单搜索 N
- [kuangbin带你飞]专题一 简单搜索 A POJ1321
- [kuangbin带你飞]专题一 简单搜索 A
- [kuangbin带你飞]专题一 简单搜索 -A
- [kuangbin带你飞]专题一 简单搜索 A
- POJ 1426 Find The Multiple(kuangbin带你飞 专题一:简单搜索)
- [kuangbin带你飞]专题一 简单搜索E - Find The Multiple(POJ 1426)
- [kuangbin带你飞]专题一 简单搜索 E - Find The Multiple poj 1426
- [kuangbin带你飞]专题一 简单搜索 E - Find The Multiple
- [kuangbin带你飞]专题一 简单搜索 Find The Multiple :dfs
- POJ 1426 Find The Multiple([kuangbin带你飞]专题一 简单搜索 )
- [kuangbin带你飞]专题1 简单搜索 A
- Kafka consumer API简介
- caffe学习笔记6--训练自己的数据集
- [Unity优化] Unity CPU性能优化
- 用jQuery写的简单两级树形菜单
- NASA研发首架登陆火星的人造飞行器,高效翼型飞翼实验-(普朗特-D3)试飞。
- [kuangbin带你飞]专题一 简单搜索 N - Find a way
- 内核入侵指南
- c++易忘简单知识点
- 38. Count and Say
- 大数之取摸问题
- 我为什么要写博客?
- spring(15)------spring的事务处理
- vC++ 调字体大小
- Android API Guides---App Manifest <grant-uri-permission> <instrumentation> <intent-filter>