【bzoj2464】中山市选[2009]小明的游戏
直接转换成最短路
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std; #define INF 0x7fffffff
#define MAXN 510 struct data
{
int v,w,next;
}e[MAXN*MAXN];
int head[MAXN*MAXN];
int cnt; struct edge
{
int to,len;
}p; struct cmp
{
bool operator () (const edge a,const edge b)
{
return a.len > b.len;
}
}; int n,m;
int S,T;
int x1,y1,x2,y2; int dis[MAXN*MAXN],vis[MAXN*MAXN]; char f[MAXN][MAXN]; void link(int u,int v,int w)
{
e[++cnt]=(data){v,w,head[u]};
head[u]=cnt;
} void Dij(int s)
{
priority_queue<edge,vector<edge>,cmp>q;
memset(vis,0,sizeof(vis));
for (int i=1;i<=n;i++)
dis[i]=INF;
dis[s]=0;
vis[s]=1;
for (int i=head[s];i;i=e[i].next)
if (dis[e[i].v]>dis[s]+e[i].w)
{
dis[e[i].v]=dis[s]+e[i].w;
p.to=e[i].v;
p.len=dis[p.to];
q.push(p);
}
for (int i=1;i<=n-1;i++)
{
if (q.empty())
break;
p=q.top();
q.pop();
while (vis[p.to] && !q.empty())
p=q.top(),q.pop();
int x=p.to;
vis[x]=1;
for (int j=head[x];j;j=e[j].next)
if (dis[e[j].v]>dis[x]+e[j].w)
{
dis[e[j].v]=dis[x]+e[j].w;
p.to=e[j].v;
p.len=dis[p.to];
q.push(p);
}
}
} int main()
{
while (scanf("%d%d",&n,&m))
{
if (n+m==0)
break;
memset(e,0,sizeof(e));
memset(head,0,sizeof(head));
cnt=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>f[i][j];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
if (j<m)
{
if (f[i][j]==f[i][j+1])
link(j+(i-1)*m,j+(i-1)*m+1,0),link(j+(i-1)*m+1,j+(i-1)*m,0);
else
link(j+(i-1)*m,j+(i-1)*m+1,1),link(j+(i-1)*m+1,j+(i-1)*m,1);
}
if (i<n)
{
if (f[i][j]==f[i+1][j])
link(j+(i-1)*m,j+i*m,0),link(j+i*m,j+(i-1)*m,0);
else
link(j+(i-1)*m,j+i*m,1),link(j+i*m,j+(i-1)*m,1);
}
}
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
S=x1*m+y1+1;
T=x2*m+y2+1;
n=n*m;
Dij(S);
printf("%d\n",dis[T]);
}
return 0;
}
【bzoj2464】中山市选[2009]小明的游戏的更多相关文章
- BZOJ2464: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 280 Solved: 124[Submit][Statu ...
- bzoj2464: 中山市选[2009]小明的游戏(最短路)
2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...
- 最短路【bzoj2464】: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...
- 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 ...
随机推荐
- Linux C下变量和常量的存储的本质
源代码 #cat main.c #include <stdio.h> int i = 100; int main(void) { func(); return 0; } #cat func ...
- java混淆工具Jocky和Proguard
java混淆工具有很多种,这里介绍Jocky和Proguard 一:Jocky是金蝶中间件技术领袖袁红岗先生的个人作品(旧有名称JOC).原本是方便Apusic 应用服务器的开发,现在开放出来,供大家 ...
- Java 获取当前时间最近12个月(字符串)
/** * 获取当前系统时间最近12月的年月(含当月) * 2018-04~2019-03 */ public String getLatest12Month(Date date){ Calendar ...
- 用PHP的GD库画五星红旗来玩玩
1 header("Content-Type:image/jpeg"); $img=imagecreatetruecolor(999,667); $color=imagecolor ...
- python模糊匹配之fuzzywuzzy
fuzzywyzzy 是python下一个模糊匹配的模块.首先要安装fuzzywuzzy 示例: from fuzzywuzzy import fuzz from fuzzywuzzy import ...
- iPhone安装ipa的方法(iTunes,PP助手)
1,通过iTunes: 将手机与电脑通过数据线连接,打开电脑中的iTunes,将ipa文件添加到资料库(ipa文件是iTunes能够识别的文件),方式如下图,然后安装,同步即可. 2,通过PP助手: ...
- 慕课笔记利用css进行布局【一列布局】
<html> <head> <title>一列布局</title> <style type="text/css"> bo ...
- 2016 Multi-University Training Contest 3-1011.Teacher Bo,暴力!
Teacher Bo Time Limit: 4000/2000 MS (Java/Ot ...
- CSUOJ 1542 线段树解决括号反向问题
题目大意: 根据初始给定的合法的小括号排序,每次进行一个操作,将第a位的括号反向,找到一个尽可能靠前的括号反向后是整个括号排列合法 数据量十分大,不断进行查询,要用线段树进行logn的复杂度的查询 首 ...
- js重新讲解继承,es5的一些继承,es6继承的改变 ----------由浅入深
es5 利用原型公有私有继承 function Parent(name) { this.name = name } Parent.prototype.home = '北京'; function Chi ...