BZOJ2464: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏
Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 280  Solved: 124
[Submit][Status]
Description
明最近喜欢玩一个游戏。给定一个n *
m的棋盘,上面有两种格子#和@。游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格。如果移动到同一类
型的格子,则费用是0,否则费用是1。请编程计算从起始位置移动到目标位置的最小花费。
Input
Output
Sample Input
@#
#@
0 0 1 1
2 2
@@
@#
0 1 1 0
0 0
Sample Output
0
HINT
对于100%的数据满足:1 < = n, m <= 500。
Source
对于这种题目我只能说呵呵。。。
裸最短路吧,连spfa都不卡。。。
代码:
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #include<map> #include<set> #include<queue> #include<string> #define inf 1000000000 #define maxn 1000000+5 #define maxm 1000000 #define eps 1e-10 #define ll long long #define pa pair<int,int> #define for0(i,n) for(int i=0;i<=(n);i++) #define for1(i,n) for(int i=1;i<=(n);i++) #define for2(i,x,y) for(int i=(x);i<=(y);i++) #define for3(i,x,y) for(int i=(x);i>=(y);i--) #define mod 1000000007
#define num(i,j) ((i-1)*m+j) using namespace std; inline int read() { int x=,f=;char ch=getchar(); while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();} while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();} return x*f; }
struct edge{int go,next,w;}e[*maxn]; int n,m,k,s,t,a[maxn],tot,d[maxn],head[maxn]; bool v[maxn];
queue<int>q;
char st[maxn];
const int dx[]={,,,-};
const int dy[]={,,-,}; void insert(int x,int y,int z) { e[++tot].go=y;e[tot].w=z;e[tot].next=head[x];head[x]=tot; } int spfa(int s,int t) { for(int i=;i<=n*m;++i)d[i]=inf; memset(v,,sizeof(v)); d[s]=;q.push(s); while(!q.empty()) { int x=q.front();q.pop();v[x]=; for(int i=head[x],y;i;i=e[i].next) if(d[x]+e[i].w<d[y=e[i].go]) { d[y]=d[x]+e[i].w; if(!v[y]){v[y]=;q.push(y);} } }
return d[t]; } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); while()
{
n=read(),m=read();
if(n*m==)break;
memset(head,,sizeof(head));tot=;
for1(i,n)
{
scanf("%s",st+);
for1(j,m)a[num(i,j)]=st[j]=='#'?:;
}
for1(i,n)
for1(j,m)
for0(k,)
{
int ii=i+dx[k],jj=j+dy[k];
if(ii<||ii>n||jj<||jj>m)continue;
insert(num(i,j),num(ii,jj),a[num(i,j)]!=a[num(ii,jj)]);
}
int x1=read()+,y1=read()+,x2=read()+,y2=read()+;
printf("%d\n",spfa(num(x1,y1),num(x2,y2)));
} return ; }
BZOJ2464: 中山市选[2009]小明的游戏的更多相关文章
- bzoj2464: 中山市选[2009]小明的游戏(最短路)
		
2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...
 - 最短路【bzoj2464】: 中山市选[2009]小明的游戏
		
2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...
 - 【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 ...
 
随机推荐
- No application 'meetme' for extension 错误
			
在asterisk中搭建简单会议室,在extensions.conf中执行到 exten => 18,n,MeetMe(18,p) asterisk控制台提示:Aug 6 8:28:41 WAR ...
 - xcode编译运行报错纪录(持续更新)
			
---恢复内容开始--- 1. Undefined symbols for architecture i386: "_deflate", referenced from: -[NS ...
 - Javascript中数组方法汇总
			
Array.prototype中定义了很多操作数组的方法,下面介绍ECMAScript3中的一些方法: 1.Array.join()方法 该方法将数组中的元素都转化为字符串并按照指定符号连接到一起,返 ...
 - 01_反射_04_反射类的main方法
			
[User.java] package com.Higgin.reflect; public class User { public User(){ System.out.println(" ...
 - Top命令查看内存
			
c 切换显示命令名称和完整命令行. M 根据驻留内存大小进行排序 第四行:内存状态 8306544k total — 物理内存总量(8GB) 7775876k used — 使用中的内存总量(7.7G ...
 - (转)Object-C 中各数据类型转换 NSData转NSString,Byte,UIImage
			
,NSData 与 NSString NSData --> NSString NSString *aString = [[NSString alloc] initWithData:adata e ...
 - 点击listview 的列头对其item进行自动排序
			
若要自定义排序顺序,必须编写一个实现 IComparer 接口的类,并将 ListViewItemSorter 属性设置为该类的一个对象.当设置 ListViewItemSorter 属性值时,将自动 ...
 - BJDP结对编程活动
			
7月21日参与了 BJDP北京的活动 在北京首次参与能够参与动手编程活动,感觉挺不错的. 本次活动共有三项内容 1. 金锐分享单元测试的Mocking技术,20 mins 2. 伍 ...
 - css的box-sizing:border-box有什么用
			
css的box-sizing:border-box有什么用:视频说是多了的尺寸去掉了,适配box宽高
 - 自己编写的sublime text 3 插件
			
一些小功能,比较杂. 具体的功能在这里查看 1.本地环境的php运行结果获取. 2.快捷打开常用的文件,文件夹,url.(ctrl+shift+a) 3.常用的缩进转换. 下边是网络爬虫代码. #py ...