最短路【bzoj2464】: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏
Description
小明最近喜欢玩一个游戏。给定一个n * m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。
最短路裸题,不给数据组数啊。
怕超时写BFS求最短路还求错了。。。
直接刚DIJ居然过了。
code:
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
const int wx=1517*1517;
inline int read(){
int sum=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
return sum*f;
}
int dx[]={0,1,0,-1,0};
int dy[]={0,0,1,0,-1};
int vis[wx],head[wx];
int dis[wx],a[1517][1517];
char c[wx];
int n,m,sx,sy,tx,ty,ans,num;
struct e{
int nxt,to,dis;
}edge[wx*2];
void add(int from,int to,int dis){
edge[++num].nxt=head[from];
edge[num].to=to;
edge[num].dis=dis;
head[from]=num;
}
struct node{
int u,d;
friend bool operator < (const node& a,const node& b){
return a.d>b.d;
}
};
priority_queue<node > q;
void Dij(int s){
for(int i=1;i<=n*m;i++)dis[i]=0x3f3f3f3f,vis[i]=0;
dis[s]=0; q.push((node){s,0});
while(q.size()){
int u=q.top().u; q.pop();
for(int i=head[u];i;i=edge[i].nxt){
int v=edge[i].to;
if(dis[v]>dis[u]+edge[i].dis){
dis[v]=dis[u]+edge[i].dis;
q.push((node){v,dis[v]});
}
}
}
}
int main(){
while(1){
n=read(); m=read();
if(!n&&!m)break;
memset(head,0,sizeof head);
memset(edge,0,sizeof edge);
num=0;
ans=0x3f3f3f3f;
for(int i=1;i<=n;i++){
scanf("%s",c+1);
for(int j=1;j<=m;j++){
a[i][j]=(c[j]=='#');
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=1;k<=4;k++){
int ex=i+dx[k];
int ey=j+dy[k];
if(ex<1||ex>n||ey<1||ey>m)continue;
if(a[ex][ey]!=a[i][j])add((i-1)*m+j,(ex-1)*m+ey,1);
else add((i-1)*m+j,(ex-1)*m+ey,0);
}
}
}
sx=read();sy=read();tx=read();ty=read();
sx++; sy++; tx++; ty++;
Dij((sx-1)*m+sy);
if(dis[(tx-1)*m+ty]==0x3f3f3f3f)dis[(tx-1)*m+ty]=0;
printf("%d\n",dis[(tx-1)*m+ty]);
}
return 0;
}
最短路【bzoj2464】: 中山市选[2009]小明的游戏的更多相关文章
- bzoj2464: 中山市选[2009]小明的游戏(最短路)
2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...
- BZOJ2464: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 280 Solved: 124[Submit][Statu ...
- 【bzoj2464】中山市选[2009]小明的游戏
直接转换成最短路 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstr ...
- AC日记——中山市选[2009]小明的游戏 bzoj 2464
2464 思路: 最短路: 代码: #include <cstdio> #include <cstring> #include <iostream> #includ ...
- BZOJ 2463: [中山市选2009]谁能赢呢?
2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1887 Solved: 1390[Submit][Sta ...
- bzoj 2463 [中山市选2009]谁能赢呢?(博弈)
2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1290 Solved: 944[Submit][Stat ...
- BZOJ 2463: [中山市选2009]谁能赢呢?(新生必做的水题)
2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2372 Solved: 1750[Submit][Sta ...
- bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?
http://www.lydsy.com/JudgeOnline/problem.php?id=2463 n为偶数时,一定可以被若干个1*2 矩形覆盖 先手每次从矩形的一端走向另一端,后手每次走向一个 ...
- bzoj 2463 [中山市选2009]谁能赢呢? 博弈
[中山市选2009]谁能赢呢? Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3014 Solved: 2165[Submit][Status][D ...
随机推荐
- Solaris10镜像情况下如何修复boot archive
在某些情况下(比如:异常宕机)solaris10的boot archive可能会损坏,导致solaris无法启动,此时需要手工修复boot archive. 本文通过模拟boot archive损坏, ...
- 11-03SQLserver基础--子查询语句
一.子查询--查询的嵌套(重点记忆) select MAX(age)from haha where bumen='销售部' --汇总-- select MAX(age)from haha where ...
- Access restriction required library rt.jar
在JAVA项目开发中,使用到了BASE64Decoder,但编辑运行时却会出现以下错误:Access restriction required library rt.jar,这里就详细的说明一下如何解 ...
- [Python Study Notes]计算器
# ------------------------------------------------------------------------------------- # @文件: 计算器.p ...
- cmake的一个编译报错
在一台新搭建的服务器上执行cmake的时候,报了如下错误: $ cmake ./ -- The C compiler identification is unknown -- The CXX comp ...
- floyd路径记录
#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #in ...
- [poj1410]Intersection
题目大意:求线段与实心矩形是否相交. 解题关键:转化为线段与线段相交的判断. #include<cstdio> #include<cstring> #include<al ...
- linux中创建图片服务器减轻传统服务器的压力
1.1. 传统项目中的图片管理 传统项目中,可以在web项目中添加一个文件夹,来存放上传的图片.例如在工程的根目录WebRoot下创建一个images文件夹.把图片存放在此文件夹中就可以直接使用在 ...
- leetCode130. Surrounded Regions--广度优先遍历算法
Problem: Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by ' ...
- SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置
一.准备工作: 1. JDK -> jdk1.6.0_17 安装(环境变量配置): JAVA_HOME = C:\ jdk1.6.0_17; PATH = %JAVA_HOME%\bin; %J ...