题目是给出只有x和y构成的图,相同元素走路不花费,不同元素间花费1,给出起点终点,最少花费是

#include<cstdio>
#include<algorithm>
#include<math.h>
#include<queue>
#include<string.h>
using namespace std;
const int maxn=110;
int nxt[4][2]={ {0,1},{0,-1},{-1,0},{1,0} };
int vis[maxn][maxn];
char a[maxn][maxn];
int n,m;
int tx,ty,endx,endy;
struct node
{
int x,y,step;
};
bool operator<(node a,node b)
{
return a.step>b.step;
}
priority_queue<node>q;
int bfs()
{
while(!q.empty()) q.pop();
memset(vis,0,sizeof(vis));
node temp;
temp.x=tx,temp.y=ty,temp.step=0;
q.push(temp);
vis[tx][ty]=1;
while(!q.empty()){
node t=q.top();
q.pop();
for(int i=0;i<=3;i++){
int nowx=t.x+nxt[i][0];
int nowy=t.y+nxt[i][1];
if(nowx<0||nowy<0||nowx>=n||nowy>=m) continue;
if(vis[nowx][nowy]) continue;
vis[nowx][nowy]=1;
node tmp;
tmp.x=nowx,tmp.y=nowy;
if(a[tmp.x][tmp.y]==a[t.x][t.y]) tmp.step=t.step;
else tmp.step=t.step+1;
if(nowx==endx&&nowy==endy){
return tmp.step;
}
else q.push(tmp);
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=0;i<n;i++){
scanf("%s",a[i]);
}
scanf("%d%d%d%d",&tx,&ty,&endx,&endy);
int ans=bfs();
printf("%d\n",ans);
}
return 0;
}

【简单的spfa+优先队列】的更多相关文章

  1. POJ1722二维spfa+优先队列优化

    题意:      给你一个有向图,然后求从起点到终点的最短,但是还有一个限制,就是总花费不能超过k,也就是说每条边上有两个权值,一个是长度,一个是花费,求满足花费的最短长度. 思路:       一开 ...

  2. hdu 4784 Dinner Coming Soon(spfa + 优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4784 思路:建图,对于同一个universe来说,就按题目给的条件相连,对于相邻的universe,连 ...

  3. 有限制的最短路spfa+优先队列

    poj1724 ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10751   Accepted: 3952 De ...

  4. ACM学习历程—HDU 2112 HDU Today(map && spfa && 优先队列)

    Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线 ...

  5. ACM学习历程—HDU4725 The Shortest Path in Nya Graph(SPFA && 优先队列)

    Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...

  6. 四点之间最短路(spfa+优先队列+枚举优化)UESTC1955喜马拉雅山上的猴子

    喜马拉雅山上的猴子 Time Limit: 1000 MS     Memory Limit: 256 MB Submit Status 余周周告诉我喜马拉雅山上有猴子,他们知道点石成金的方法.我不信 ...

  7. LeetCode455 分发饼干(简单贪心—Java优先队列简单应用)

    题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有 ...

  8. loj 1150(spfa预处理+二分+最大匹配)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26864 思路:首先是spfa预处理出每个'G'到'H'的最短距离, ...

  9. 最短路径算法之四——SPFA算法

    SPAF算法 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm,该算法是西南交通大学段凡丁于1994年发表的. 它可以在O(kE)的时间复杂度内求出源点 ...

随机推荐

  1. Java哲学家进餐问题|多线程

    Java实验三 多线程 哲学家进餐问题: 5个哲学家共用一张圆桌,分别坐在周围的5张椅子上, 在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双), 碗和筷子交替排列.他们的生活方式是交替地进行思考 ...

  2. QT debug执行exe文件 应用程序无法正常启动0xc000007b

    遇到这种错,发现并不是因为缺失dll文件,因为我把需要的DLL都放到Debug文件下了,但还是有这问题: 解决方法: 右键点击-- >我的电脑--属性-->高级系统设置-->环境变量 ...

  3. R的环境系统

      r环境概念 环境:用来具体存储对象的地方. 规则1:每一个对象都存储在一个环境当中. 规则2:每一个环境都与一个父环境相连接,构成一个分层的环境系统. 规则3:子环境与父环境的连接是单向的. pa ...

  4. WPF 精修篇 DataGrid 数据源排序

    原文:WPF 精修篇 DataGrid 数据源排序 效果 <DataGrid x:Name="datagrid" ItemsSource="{Binding Ele ...

  5. 抓包工具之fiddler实战3-接口测试

    Fiddler实现接口测试 Fiddler提供了进行接口测试的功能,找到composer界面,选择接口方法,填写接口URL地址,发送请求. 例子:全国天气预报的接口 http://v.juhe.cn/ ...

  6. 搭建Tomcat服务器访问本地资源

    目标,搭建Tomcat服务器,使同网络段下其他电脑可以访问分享的文件 下载安装Tomcat 如下图,在官网http://Tomcat.apache.org/下载对应版本的Tomcat,解压安装即可 启 ...

  7. 【shell脚本】点名器===randomName.sh

    随机点名,从name.txt文件中读取名字 [root@VM_0_10_centos shellScript]# cat randowName.sh #!/bin/bash # 随机点名器 # 需提前 ...

  8. oracle 关联更新

    不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...

  9. mysql 5.7 创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

    如: INSERT INTO user (host, user, authentication_string, select_priv, insert_priv, update_priv) VALUE ...

  10. python爬取网站视频保存到本地

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Woo_home PS:如有需要Python学习资料的小伙伴可以加点 ...