【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
来源:互联网 发布:linux ln -s 编辑:程序博客网 时间:2024/05/01 11:15
题解:最短路pqspfa200ms,一眼题,
另一种想出来没写的做法:二分答案,上界n+m
时间复杂度O(n*m*log(n+m)),二分+深搜看能不能找到t
最短路代码:
#include <queue>#include <cstdio>#include <cstring>#include <algorithm>#define N 505#define NN 251000#define inf 0x3f3f3f3fusing namespace std;const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};struct KSD{int v,len,next;}e[NN<<2];int head[NN],cnt;void add(int u,int v,int len){++cnt;e[cnt].v=v;e[cnt].len=len;e[cnt].next=head[u];head[u]=cnt;}int dist[NN],in[NN];struct Vayne{int f,v;bool operator < (const Vayne &a)const{return f>a.f;}Vayne(){}Vayne(int _f,int _v):f(_f),v(_v){}};int s,t,n,m,id[N][N],num;char map[N][N];priority_queue<Vayne>q;void init(){num=cnt=0;memset(head,0,sizeof(head));}int spfa(){while(!q.empty())q.pop();memset(dist,0x3f,sizeof(dist));memset(in,0,sizeof(in));int i,u,v,temp;dist[s]=0;in[s]=1;q.push(Vayne(0,s));while(!q.empty()){Vayne U=q.top();q.pop();u=U.v;in[u]=0;for(i=head[u];i;i=e[i].next){v=e[i].v;if(dist[v]>dist[u]+e[i].len){dist[v]=dist[u]+e[i].len;if(!in[v]){in[v]=1;q.push(Vayne(dist[v],v));}}}}return dist[t];}bool build(){int i,j,k;int a,b,c;int x,y;init();scanf("%d%d",&n,&m);if(n==0&&m==0)return 0;for(i=1;i<=n;i++)scanf("%s",map[i]+1);for(i=1;i<=n;i++)for(j=1;j<=m;j++)id[i][j]=++num;for(i=1;i<=n;i++)for(j=1;j<=m;j++){int iid=id[i][j];for(k=0;k<4;k++){x=i+dx[k];y=j+dy[k];if(id[x][y]){int len=(map[i][j]==map[x][y]);add(iid,id[x][y],!len);add(id[x][y],iid,!len);}}}scanf("%d%d%d%d",&a,&b,&x,&y);s=id[a+1][b+1];t=id[x+1][y+1];return 1;}int main(){//freopen("test.in","r",stdin);while(build())printf("%d\n",spfa());return 0;}
1 0
- 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
- [BZOJ2464]中山市选[2009]小明的游戏
- 【中山市选2009】【BZOJ2464】小明的游戏
- 【bzoj2464】【中山市选2009】【小明的游戏】【spfa】
- BZOJ2464: 中山市选[2009]小明的游戏
- BZOJ 2464 中山市选 2009 小明的游戏 最短路
- bzoj 2464: 中山市选[2009]小明的游戏 最短路
- BZOJ 2464 中山市选2009 小明的游戏 SPFA
- BZOJ 2464: 中山市选[2009]小明的游戏
- 2464: 中山市选[2009]小明的游戏
- BZOJ 2464 中山市选[2009]小明的游戏 SPFA
- BZOJ[2464]中山市选[2009]小明的游戏 SPFA
- bzoj 2464 中山市选[2009]小明的游戏
- BZOJ 2464: 中山市选[2009]小明的游戏 简单搜索
- hdu 2544 最短路 水的不能再水的最短路~~~Floyd就能过
- [中山市选] 杀人游戏
- [中山市选2011]杀人游戏
- [中山市选2011]杀人游戏
- phoneGap 打包ios 过程以及遇到的各种困难
- 第13周项目5-字符串操作(1)-1
- 压缩感知中的数学知识:投影矩阵(projection matrix)
- Web开发基本准则-55实录-缓存策略
- elipse 调试jdk时候变量不显示值以及解决办法
- 【BZOJ2464】【中山市选2009】小明的游戏 最短路水过
- android中activity间动画跳转
- 第十三周项目1-2
- TortoiseSVN安装使用
- RealView MDK 使用
- 第十三周项目一(1) 数组大折腾(从前往后输出)
- NSSortDescriptor(数组排序)
- Android学习系列(29)--App调试的几个命令实践
- Java GC系列(3):垃圾回收器种类