bzoj 2464 中山市选[2009]小明的游戏
来源:互联网 发布:数据分析师前景如何 编辑:程序博客网 时间:2024/05/01 13:16
Description
小明最近喜欢玩一个游戏。给定一个n * m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。
Input
输入文件有多组数据。输入第一行包含两个整数n,m,分别表示棋盘的行数和列数。输入接下来的n行,每一行有m个格子(使用#或者@表示)。输入接下来一行有四个整数x1, y1, x2, y2,分别为起始位置和目标位置。
当输入n,m均为0时,表示输入结束。
Output
对于每组数据,输出从起始位置到目标位置的最小花费。每一组数据独占一行。
Sample Input
2 2
@#
@
0 0 1 1
2 2
@@
@#
0 1 1 0
0 0
Sample Output
2
0
HINT
对于100%的数据满足:1 < = n, m <= 500。
#include <cstdio>#include <iostream>#include <queue>#include <cstring>using namespace std;int n,m;int jv[505][505];bool v[505][505];int x[4]={0,0,1,-1};int y[4]={1,-1,0,0};char tu[505][505];int dis[505][505];struct dian{ int x,y; dian(int _x=0,int _y=0):x(_x),y(_y){}}s,t;inline bool pd1(int x,int y){ if(x<0 || y<0 || x>=n || y>=m) return false; return true;}inline int cacu(int x,int y,int xx,int yy){ if(tu[x][y]==tu[xx][yy]) return 0; return 1;}inline void spfa(){ memset(v,0,sizeof(v)); v[s.x][s.y]=1; memset(dis,0x7f7f,sizeof(dis)); dis[s.x][s.y]=0; queue<dian>q; q.push(s); while(!q.empty()){ dian dmf=q.front(); q.pop(); v[dmf.x][dmf.y]=0; for(int i=0;i<=4;++i){ int xx=dmf.x+x[i]; int yy=dmf.y+y[i]; if(!pd1(xx,yy)) continue; if(dis[xx][yy]>dis[dmf.x][dmf.y]+cacu(xx,yy,dmf.x,dmf.y)){ dis[xx][yy]=dis[dmf.x][dmf.y]+cacu(xx,yy,dmf.x,dmf.y); if(!v[xx][yy]){ v[xx][yy]=1; q.push(dian(xx,yy)); } } } }}int main(){ while(scanf("%d%d",&n,&m)==2){ if(n==0&&m==0) return 0; for(int i=0;i<n;++i){ for(int j=0;j<m;++j){ cin>>tu[i][j]; } } scanf("%d%d%d%d",&s.x,&s.y,&t.x,&t.y); spfa(); printf("%d\n",dis[t.x][t.y]); } return 0;}
又是个spfa~~hiahiahia
阅读全文
0 0
- BZOJ 2464 中山市选2009 小明的游戏 SPFA
- BZOJ 2464: 中山市选[2009]小明的游戏
- BZOJ 2464 中山市选[2009]小明的游戏 SPFA
- BZOJ[2464]中山市选[2009]小明的游戏 SPFA
- bzoj 2464 中山市选[2009]小明的游戏
- BZOJ 2464 中山市选 2009 小明的游戏 最短路
- bzoj 2464: 中山市选[2009]小明的游戏 最短路
- BZOJ 2464: 中山市选[2009]小明的游戏 简单搜索
- 2464: 中山市选[2009]小明的游戏
- [BZOJ2464]中山市选[2009]小明的游戏
- 【中山市选2009】【BZOJ2464】小明的游戏
- 【bzoj2464】【中山市选2009】【小明的游戏】【spfa】
- BZOJ2464: 中山市选[2009]小明的游戏
- 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
- BZOJ 2438: [中山市选2011]杀人游戏
- bzoj[中山市选2009]谁能赢呢?
- BZOJ 2464 小明的游戏
- BZOJ 2438 [中山市选2011] 杀人游戏 (图的联通,tarjan)
- 决策树学习笔记
- 如何理解html,xml,json作用
- PAT 甲级 1073. Scientific Notation (20)
- TCP粘包,拆包
- 第十八课 使用视图
- bzoj 2464 中山市选[2009]小明的游戏
- scanf gets getchar cin cin.get getline 总结
- poj 1436 Horizontally Visible Segments
- 第十章g2o_custombundle中的common文件夹中的BundleParams.h
- 使用DrawerLayout+Toolbar实现侧滑菜单
- 机器学习面试问题
- 机器学习笔记--决策树&决策树可视化
- c++笔记:(2)
- 笔记