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]小明的游戏的更多相关文章

  1. bzoj2464: 中山市选[2009]小明的游戏(最短路)

    2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...

  2. BZOJ2464: 中山市选[2009]小明的游戏

    2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 280  Solved: 124[Submit][Statu ...

  3. 【bzoj2464】中山市选[2009]小明的游戏

    直接转换成最短路 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstr ...

  4. AC日记——中山市选[2009]小明的游戏 bzoj 2464

    2464 思路: 最短路: 代码: #include <cstdio> #include <cstring> #include <iostream> #includ ...

  5. BZOJ 2463: [中山市选2009]谁能赢呢?

    2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1887  Solved: 1390[Submit][Sta ...

  6. bzoj 2463 [中山市选2009]谁能赢呢?(博弈)

    2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1290  Solved: 944[Submit][Stat ...

  7. BZOJ 2463: [中山市选2009]谁能赢呢?(新生必做的水题)

    2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2372  Solved: 1750[Submit][Sta ...

  8. bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?

    http://www.lydsy.com/JudgeOnline/problem.php?id=2463 n为偶数时,一定可以被若干个1*2 矩形覆盖 先手每次从矩形的一端走向另一端,后手每次走向一个 ...

  9. bzoj 2463 [中山市选2009]谁能赢呢? 博弈

    [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3014  Solved: 2165[Submit][Status][D ...

随机推荐

  1. Solaris10镜像情况下如何修复boot archive

    在某些情况下(比如:异常宕机)solaris10的boot archive可能会损坏,导致solaris无法启动,此时需要手工修复boot archive. 本文通过模拟boot archive损坏, ...

  2. 11-03SQLserver基础--子查询语句

    一.子查询--查询的嵌套(重点记忆) select MAX(age)from haha where bumen='销售部' --汇总-- select MAX(age)from haha where  ...

  3. Access restriction required library rt.jar

    在JAVA项目开发中,使用到了BASE64Decoder,但编辑运行时却会出现以下错误:Access restriction required library rt.jar,这里就详细的说明一下如何解 ...

  4. [Python Study Notes]计算器

    # ------------------------------------------------------------------------------------- # @文件: 计算器.p ...

  5. cmake的一个编译报错

    在一台新搭建的服务器上执行cmake的时候,报了如下错误: $ cmake ./ -- The C compiler identification is unknown -- The CXX comp ...

  6. floyd路径记录

    #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #in ...

  7. [poj1410]Intersection

    题目大意:求线段与实心矩形是否相交. 解题关键:转化为线段与线段相交的判断. #include<cstdio> #include<cstring> #include<al ...

  8. linux中创建图片服务器减轻传统服务器的压力

    1.1.   传统项目中的图片管理 传统项目中,可以在web项目中添加一个文件夹,来存放上传的图片.例如在工程的根目录WebRoot下创建一个images文件夹.把图片存放在此文件夹中就可以直接使用在 ...

  9. leetCode130. Surrounded Regions--广度优先遍历算法

    Problem: Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by ' ...

  10. SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置

    一.准备工作: 1. JDK -> jdk1.6.0_17 安装(环境变量配置): JAVA_HOME = C:\ jdk1.6.0_17; PATH = %JAVA_HOME%\bin; %J ...