直接转换成最短路

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

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

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

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

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

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

    2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...

  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. python 获取路径

    获取目录路径和文件路径 import osfor root, dirs, files in os.walk(".", topdown=False): # ‘.’为获取脚本所在路径下 ...

  2. jsMap地图网点

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...

  3. Go:方法

    一.基本介绍 在某些情况下,我们需要定义方法.比如 Person 结构体,除了有一些字段外(姓名.年龄...),还可以有一些行为动作(吃.唱歌...),这就需要用方法才能实现. Go中的方法是作用在指 ...

  4. LeetCode(43)Multiply Strings

    题目 Given two numbers represented as strings, return multiplication of the numbers as a string. Note: ...

  5. UVa Sculpture(离散化 floodfill)

    题意: 给定n个立方体的一个顶点坐标和3边长度,  问这些立方体组成的雕塑的表面积和体积,   坐标都是整数,n最大为50,  最大为500, 边长最大也是500. 分析: 继UVa221后又一道离散 ...

  6. 张小龙最新内部演讲:KPI 是副产品,警惕复杂流程

    张小龙最新内部演讲:KPI 是副产品,警惕复杂流程 各位 WXG(微信事业群)的同事们,大家早上好!又到我们一年一度的领导力大会. 大家都看到,我们微信团队膨胀还是比较快的,有 1500 多人了.对此 ...

  7. C51 使用端口 个人笔记

    使用整个端口的8个引脚: 八个引脚,需要8位2进制,2位十六进制 #define P0 led led = 0x3f; //led = ~0x3f; 使用某个端口的某一个引脚 sbit led = P ...

  8. POJ-1679 The Unique MST,次小生成树模板题

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K       Description Given a connected undirec ...

  9. [COJ0968]WZJ的数据结构(负三十二)

    [COJ0968]WZJ的数据结构(负三十二) 试题描述 给你一棵N个点的无根树,边上均有权值,每个点上有一盏灯,初始均亮着.请你设计一个数据结构,回答M次操作. 1 x:将节点x上的灯拉一次,即亮变 ...

  10. [luoguP1472] 奶牛家谱 Cow Pedigrees(DP)

    传送门 一个深度为i的树可以由一个根节点外加两个深度为i-1的树组成,这就决定了DP该怎么写. 然而我真的没有想到. f[i][j]表示深度为i节点数为j的个数 sum[i][j]表示深度小于等于i节 ...