sendrose【SPFA】
之前看到一题需要并查集+SPFA,然后就特别囧的发现自己SPFA这个历史遗留问题已经不知道怎么打了╮(╯▽╰)╭
就果断挑了一题特别裸的SPFA赶紧搞搞掉,顺便自己乱YY下学SPFA的笔记,免得自己下次又逗比了 SPFA是求最短路问题的一种解法
解决的是单源最短路,也就是求所有点到某一个点的最短路
反正自己乱YY当成是最短的路径+BFS+是否入队就完事了,大概的看程序的标注【QAQ...表示还好自己看得懂自己的程序】
据说调用STL的队列更省事,哪天学学嗯
【题目描述】
情人节到了,情侣们也活跃起来了。这不,GoldenSun和Yoyo_Yao分到了同一个班上(真有缘)。这天,GoldenSun专门跑到了花店,为Yoyo_Yao选了999支玫瑰花(-_-|||),可当GoldenSun说了一大堆肉麻的话,正准备把花送给Yoyo_Yao时,班主任DuBowen进来了,无奈的GoldenSun只得从自己的位子上把花传给Yoyo_Yao。如果一整束传,不但比较抢眼,说不定还会被中途的一些八卦的人抢走,所以GoldenSun只能一支一支的传。
已知GoldenSun他们班的座位是一个矩形,GoldenSun的位子在(x,m),Yoyo_Yao的位子在(y,n),传玫瑰时,只能纵横传而不能斜传(更不能扔)。又知GoldenSun班上的同学很八卦,每经过一个同学传时,玫瑰花就会扣去一定的成长值(玫瑰先开始有个成长值),即那个同学的八卦度,当玫瑰的成长值不大于0时,玫瑰就会凋零。GoldenSun希望自己的心血不要白费,即所有的玫瑰花都能传到Yoyo_Yao手中,所以如果有这种情况,GoldenSun就会自己冒着风险送这朵玫瑰。
请你帮GoldenSun找到一条令玫瑰成长值为最高的路线,让GoldenSun能向Yoyo_Yao在情人节之际表达自己的爱意。
【输入格式】
输入第一行有2个用空格隔开的整数a和b,表示班里有a行b列(1<=a,b<=90)。
第二行有四个用空格隔开的整数x,m,y,n,(x,m)为GoldenSun的座位,(y,n)为Yoyo_Yao的座位。(1<=x,y<=a;1<=m,n<=b)
第三行有一个整数love为单支玫瑰的最初成长值。(0<love<=maxlongint)
来的a行是一个a*b的矩阵,矩阵中第i行j列的正整数表示坐在第i行j列的学生的八卦程度,每行的b个整数之间用空格隔开。(当然他们两个人的八卦程度为0)
八卦程度(0<=bg<=love)
【输出格式】
输出共一行,包含一个整数,表示单支玫瑰最后成长值的最大值。
如果是GoldenSun自己送,则输出love,即单支玫瑰的最初成长值。
【输入样例】
2 2
1 1 2 2
3
0 1
1 0 【输出样例】
2
#include<cstdio>
#include<cstring>
using namespace std;
int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};
int dis[100][100],n,m,t,d1[100000],d2[100000],a[100][100];
bool v[100][100];//标记是否入队☆
void spfa(int x,int y){
int h=1,w=1,i,xx,yy,c,b,j;
memset(dis,20,sizeof(dis));
memset(v,true,sizeof(v));
d1[h]=x;d2[h]=y;
dis[x][y]=0;
v[x][y]=false;
while(h<=w){//有点类似于BFS☆
int b=d1[h],c=d2[h];
for(i=0;i<4;i++){
xx=b+dx[i];
yy=c+dy[i];
if(xx>0 && xx<=n && yy>0 && yy<=m){
if(dis[xx][yy]>dis[b][c]+a[xx][yy]){//☆
dis[xx][yy]=dis[b][c]+a[xx][yy];
if(v[xx][yy]){
w++;
d1[w]=xx;d2[w]=yy;
v[xx][yy]=false;
}}}}
v[b][c]=true;
h++;
}}
int main(){
int i,j,s,x,y,xx,yy;
freopen("sendrose.in","r",stdin);freopen("sendrose.out","w",stdout);
scanf("%d%d%d%d%d%d%d",&n,&m,&x,&y,&xx,&yy,&t);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) scanf("%d",&a[i][j]);
spfa(x,y);
if((t-dis[xx][yy])>=0 && t-dis[xx][yy]!=t) printf("%d",t-dis[xx][yy]);
else printf("%d",t);
return 0;
}
sendrose【SPFA】的更多相关文章
- 【SPFA】 最短路计数
最短路计数 [问题描述] 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. [输入格式] 输入第一行包含2个正整数N,M,为图的顶点数与边数. ...
- 【SPFA】POJ1511-Invitation Cards
[题目大意] 给出一张有向图,以1位源点,求“从源点出发到各点的距离”和“与各点返回源点的距离和”相加得到的和. [思路] 毫无疑问是最短路径,但是这数据量就算是SPFA也绝壁会超时啊,抱着必死的心态 ...
- 【SPFA】POJ1860-Currency Exchange
[题目大意] 给出每两种货币之间交换的手续费和汇率,求出从当前货币s开始交换,能否赚. [思路] 反向运用SPFA,判断是否有正环.每次队首元素出队之后,判断一下到源点s的距离是否增大,增大则返回tr ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- 【spfa】bzoj3921 Mimori与树海
考虑“删除后图仍连通”,即其不是无向图的桥(bridge),可以用Tarjan算法预处理,这里不赘述. [算法一] 枚举删除的是哪条边,然后枚举起点,暴搜,统计答案. 可以通过0.1号测试点. 预计得 ...
- BZOJ2662[BeiJing wc2012]冻结【SPFA】
“我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„” 在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard ...
- 【Tarjan】+【SPFA】APIO2009 Atm
一.算法介绍 tarjan——求解有向图强连通分量.这个算法在本人的一篇blog中有介绍,这里就不赘述了.贴上介绍tarjan的的blog链接:http://www.cnblogs.com/Maki- ...
- NYOJ115 市叛乱 【SPFA】
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...
- GDOI2014模拟 旅行【SPFA】
旅行(travel) 从前有一位旅者,他想要游遍天下所有的景点.这一天他来到了一个神奇的王国:在这片土地上,有n个城市,从1到n进行编号.王国中有m条道路,第i条道路连接着两个城市ai,bi,由于年代 ...
随机推荐
- mysql_oracle_随机查询几条记录
数据库的随机查询SQL 1. Oracle,随机查询20条 select * from ( select * from 表名 order by dbms_random.value ) where ...
- 多维算法思考(三):AB组合问题
多维算法思考(三):AB组合问题 题目:x个A,y个B可以组合成多少个不同排列的问题. 首先,我们用数学的方式思考,这个问题属于<组合数学>的问题,我们的第一种方法可以用组合思路来求解. ...
- 关于微软公有云Azure会计标准
前几年.中国的云计算项目往往搞成了房地产项目.大搞形"象project",没有实质性的内容.云计算老总成了房地产大老板,国内业界是在胡闹! 现今,世纪互联与微软(中国)联手搞公有云 ...
- 【百度地图API】关于如何进行城市切换的三种方式
原文:[百度地图API]关于如何进行城市切换的三种方式 摘要:本文介绍了三种切换城市的方式:查询城市.城市列表和显示城市轮廓. ------------------------------------ ...
- Java初认识--Java语言的书写规范及基本的运算符
一.Java中名称的规范和书写程序的规范. 1.Java中的名称规范: (1)包名全是小写:xxyyzz: (2)类名接口名:首字母大写:XxxYyy: (3)变量名和函数名:变量名不能是关键字:多单 ...
- Socket 学习(三).4 UDP 穿透 客户端与客户端连接
效果图: 使用方法: 先 修改WinClient\bin\Debug 下面的 ip.ini,写上 服务器 IP地址. 客户端 与 客户端 通讯 之前 ,点击发送打洞消息 按钮,然后过一会再发送消息 ...
- .Net2.0 --Winform结合WebBrowser控件和Socket老技术来实现另类Push~
原文:.Net2.0 --Winform结合WebBrowser控件和Socket老技术来实现另类Push~ 目前的企业级开发比较流行的是Web2.0技术,但是由于Web技术基于请求--响应的交互模式 ...
- 我的MYSQL学习心得(十)
原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
原文:ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则 对于Model验证,理想的设计应该是场景驱动的,而不是Model(类型)驱动的,也就是对于同一个Model对象, ...
- 互联网创业应该如何找到创意 - RethinkDB创始人Slava Akhmechet的几点建议
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是一个设计来帮助开发者和运营团队来处理无结构数据的一个开源的分布式数据库,用户可以使用它来作为 ...