BZOJ 2464 中山市选2009 小明的游戏 SPFA
来源:互联网 发布:手机照相特效软件 编辑:程序博客网 时间:2024/05/01 16:36
题目大意:给定一个由'#'和'@'构成的二维矩阵,走到不同的字符需要代价1,求s到t的最短路
签到题+1
这操作符重载要不要写的这么高大上……
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define M 510using namespace std;typedef pair<int,int> abcd;template<typename T>struct Reader{T xx[M][M];T& operator [] (abcd x){return xx[x.first][x.second];}};int m,n;abcd q[1<<16],s,t;unsigned short r,h;Reader<char>map;Reader<int>f;Reader<bool>v;const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};void SPFA(){int i;memset(&f,0x3f,sizeof f);v[s]=1;f[s]=0;q[++r]=s;while(r!=h){abcd x=q[++h];v[x]=0;for(i=0;i<4;i++){abcd y(x.first+dx[i],x.second+dy[i]);if(y.first<=0||y.second<=0||y.first>m||y.second>n)continue;if(f[y]>f[x]+(map[x]!=map[y]) ){f[y]=f[x]+(map[x]!=map[y]);if(!v[y])v[y]=1,q[++r]=y;}}}}int main(){int i;while(cin>>m>>n,m||n){for(i=1;i<=m;i++)scanf("%s",map.xx[i]+1);scanf("%d%d",&s.first,&s.second);s.first++;s.second++;scanf("%d%d",&t.first,&t.second);t.first++;t.second++;SPFA();printf("%d\n",f[t]);}}
0 0
- BZOJ 2464 中山市选2009 小明的游戏 SPFA
- BZOJ 2464 中山市选[2009]小明的游戏 SPFA
- BZOJ[2464]中山市选[2009]小明的游戏 SPFA
- BZOJ 2464: 中山市选[2009]小明的游戏
- bzoj 2464 中山市选[2009]小明的游戏
- 【bzoj2464】【中山市选2009】【小明的游戏】【spfa】
- BZOJ 2464 中山市选 2009 小明的游戏 最短路
- bzoj 2464: 中山市选[2009]小明的游戏 最短路
- BZOJ 2464: 中山市选[2009]小明的游戏 简单搜索
- 2464: 中山市选[2009]小明的游戏
- [BZOJ2464]中山市选[2009]小明的游戏
- 【中山市选2009】【BZOJ2464】小明的游戏
- BZOJ2464: 中山市选[2009]小明的游戏
- 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
- BZOJ 2438: [中山市选2011]杀人游戏
- bzoj[中山市选2009]谁能赢呢?
- BZOJ 2464 小明的游戏
- BZOJ 2438 [中山市选2011] 杀人游戏 (图的联通,tarjan)
- 【Java工程师之路】[3-4.2]JavaMail 简易教程
- SQL Server 中DATEADD()函数的使用
- scanUpToString
- [Swift]继承
- UBIFS文件系统二之挂载UBIFS的代码分析
- BZOJ 2464 中山市选2009 小明的游戏 SPFA
- 第十三周项目六:体验文件操作2.0
- 网关/路由器
- 对于XML 中firstchild 的理解
- CommandType的使用
- Matlab的单步调试操作
- POJ 1258 Agri-Net 最小生成树 Prim算法
- 第12周 项目4 银行系统
- C# GetType和typeof()的区别