bzoj 2464: 中山市选[2009]小明的游戏 最短路
来源:互联网 发布:开淘宝企业店流程 编辑:程序博客网 时间:2024/05/01 06:10
题意
小明最近喜欢玩一个游戏。给定一个n * m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。
n,m<=500
分析
刷水题有益与身心健康~~
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>#define N 505#define inf 0x3f3f3f3fusing namespace std;int n,m,cnt,s,t,a[N][N],dis[N*N],vis[N*N],dx[4]={1,0,-1,0},dy[4]={0,1,0,-1},last[N*N];struct edge{int to,w,next;}e[N*N*3];queue <int> q;char ch[N];void addedge(int u,int v,int w){ e[++cnt].to=v;e[cnt].w=w;e[cnt].next=last[u];last[u]=cnt;}void spfa(){ memset(dis,inf,sizeof(dis)); q.push(s); vis[s]=1; dis[s]=0; while (!q.empty()) { int u=q.front(); q.pop(); for (int i=last[u];i;i=e[i].next) if (dis[u]+e[i].w<dis[e[i].to]) { dis[e[i].to]=dis[u]+e[i].w; if (!vis[e[i].to]) { q.push(e[i].to); vis[e[i].to]=1; } } vis[u]=0; }}int main(){ while (1) { scanf("%d%d",&n,&m); if (!n&&!m) break; cnt=0; memset(last,0,sizeof(last)); for (int i=1;i<=n;i++) { scanf("%s",ch+1); for (int j=1;j<=m;j++) if (ch[j]=='#') a[i][j]=1; else a[i][j]=0; } for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { int now=(i-1)*m+j; for (int k=0;k<=3;k++) { int p=i+dx[k],q=j+dy[k]; if (p<1||p>n||q<1||q>m) continue; if (a[p][q]==a[i][j]) addedge(now,(p-1)*m+q,0); else addedge(now,(p-1)*m+q,1); } } int x1,y1,x2,y2; scanf("%d%d%d%d",&x1,&y1,&x2,&y2); s=x1*m+y1+1;t=x2*m+y2+1; spfa(); printf("%d\n",dis[t]); } return 0;}
0 0
- BZOJ 2464 中山市选 2009 小明的游戏 最短路
- bzoj 2464: 中山市选[2009]小明的游戏 最短路
- BZOJ 2464 中山市选2009 小明的游戏 SPFA
- BZOJ 2464: 中山市选[2009]小明的游戏
- BZOJ 2464 中山市选[2009]小明的游戏 SPFA
- BZOJ[2464]中山市选[2009]小明的游戏 SPFA
- bzoj 2464 中山市选[2009]小明的游戏
- 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
- BZOJ 2464: 中山市选[2009]小明的游戏 简单搜索
- 2464: 中山市选[2009]小明的游戏
- [BZOJ2464]中山市选[2009]小明的游戏
- 【中山市选2009】【BZOJ2464】小明的游戏
- 【bzoj2464】【中山市选2009】【小明的游戏】【spfa】
- BZOJ2464: 中山市选[2009]小明的游戏
- BZOJ 2438: [中山市选2011]杀人游戏
- bzoj[中山市选2009]谁能赢呢?
- BZOJ 2464 小明的游戏
- BZOJ 2438 [中山市选2011] 杀人游戏 (图的联通,tarjan)
- 【杂】CHM格式
- ACM篇:POJ 1200 -- Crazy Search
- 第十章—ViewPager的使用
- 最小公约数
- Android 仿QQ讨论组头像
- bzoj 2464: 中山市选[2009]小明的游戏 最短路
- Linux下SVN常用命令
- Android布局控件相同属性的简单写法style
- Java中关于String类型的10个问题
- Retina 显示屏的网页图片兼容方案
- Implement atoi to convert a string to an integer.
- 银河英雄传说(并查集)
- 最小生成树-prim算法
- SqlServer索引及优化详解