洛谷 P1746 离开中山路
题目背景
《爱与愁的故事第三弹·shopping》最终章。
题目描述
爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在x1,y1处,车站在x2,y2处。现在给出一个n×n(n<=1000)的地图,0表示马路,1表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(a[i][j]距离为1)。你能帮他解决吗?
输入输出格式
输入格式:
第1行:一个数 n
第2行~第n+1行:整个地图描述(0表示马路,1表示店铺,注意两个数之间没有空格)
第n+2行:四个数 x1,y1,x2,y2
输出格式:
只有1行:最短到达目的地距离
输入输出样例
说明
20%数据:n<=100
100%数据:n<=1000
思路:bfs。dfs和spfa等图论算法都会gg。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans=0x7f7f7f7f;
int sx,sy,tx,ty;
int map[][];
int dx[]={,,,-};
int dy[]={-,,,};
void dfs(int x,int y,int tot){
if(tot>=ans) return ;
if(x==tx&&y==ty){
ans=min(ans,tot);
return ;
}
for(int i=;i<;i++){
int cx=x+dx[i];
int cy=y+dy[i];
if(!map[cx][cy]&&cx>=&&cx<=n&&cy>=&&cy<=n){
map[cx][cy]=;
dfs(cx,cy,tot+);
map[cx][cy]=;
}
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
char x;cin>>x;
map[i][j]=x-'';
}
scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
dfs(sx,sy,);
cout<<ans;
}
TLE的dfs
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans=0x7f7f7f7f;
int sx,sy,tx,ty;
int map[][];
int dx[]={,,,-};
int dy[]={-,,,};
struct nond{
int x,y,step;
};
queue<nond>que;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
char x;cin>>x;
map[i][j]=x-'';
}
scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
nond tmp;tmp.x=sx;tmp.y=sy;tmp.step=;
que.push(tmp);map[sx][sy]=;
while(!que.empty()){
nond now=que.front();
que.pop();
for(int i=;i<;i++){
nond c;c.x=now.x+dx[i];
c.y=now.y+dy[i];
c.step=now.step+;
if(c.x==tx&&c.y==ty){ cout<<c.step;return ; }
if(c.x>=&&c.x<=n&&c.y>=&&c.y<=n&&!map[c.x][c.y]){
map[c.x][c.y]=;
que.push(c);
}
}
}
}
洛谷 P1746 离开中山路的更多相关文章
- 洛谷——P1746 离开中山路
P1746 离开中山路 题目背景 <爱与愁的故事第三弹·shopping>最终章. 题目描述 爱与愁大神买完东西后,打算坐车离开中山路.现在爱与愁大神在x1,y1处,车站在x2,y2处.现 ...
- 洛谷P1746 离开中山路
https://www.luogu.org/problemnew/show/P1746 思路:用广搜从起点开始,遍历所有可达的点,再往下遍历直到到达终点,所以能保证得到的结果一定是最优解 #inclu ...
- 洛谷评测机BUG(应该是)
此问题由洛谷p1746引出(之前出过类似问题没在意) 传送门 以下是两个差不多的程序,(只有main函数中的输入不同,第一个程序迷之WA,第二个程序AC) #include <bits/stdc ...
- 洛谷2583 地铁间谍 (UVa1025A Spy in the Metro)
洛谷2583 地铁间谍(UVa1025A Spy in the Metro) 本题地址:http://www.luogu.org/problem/show?pid=2583 题目描述 特工玛利亚被送到 ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷 P2802 回家
题目链接 https://www.luogu.org/problemnew/show/P2802 题目描述 小H在一个划分成了n*m个方格的长方形封锁线上. 每次他能向上下左右四个方向移动一格(当然小 ...
- 洛谷P1342 请柬(SPFA)
To 洛谷.1342 请柬 题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计 ...
- 洛谷P2982 [USACO10FEB]慢下来Slowing down(线段树 DFS序 区间增减 单点查询)
To 洛谷.2982 慢下来Slowing down 题目描述 Every day each of Farmer John's N (1 <= N <= 100,000) cows con ...
- 洛谷 P3956 棋盘 解题报告
P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...
随机推荐
- jquery日历插件FullCalendar使用技巧
原文链接:http://blog.csdn.net/u013493957/article/details/44920341 FullCalendar是一款基于jquery的日历控件,它有着很强大的 ...
- 【转】C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素
有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求. 按下面介绍的方法可轻松实现图层属性过滤显示: 1.当图层已经加载时 private void ShowByFilter(Ax ...
- ClassNotFoundException和NoClassDefFoundError的差别
正如它们的名字所说明的:NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中错误和异常是有差别的,我们能够从异常中恢 ...
- pthread_create()创建线程时传入多个參数
因为接口仅仅定义了一个入參void *arg int pthread_create(pthread_t *tidp,const pthread_attr_t *attr, (void*)(*start ...
- UVA - 11762 - Race to 1 记忆化概率
Dilu have learned a new thing about integers, which is - any positive integer greater than 1 can bed ...
- 希尔加密算法(湖南师范大学第六届大学生计算机程序设计竞赛)hnuoj11552
解密 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 2, Accept ...
- IPK僵尸网络 看看其传播手法
转自:http://www.freebuf.com/vuls/154975.html 一.IPK僵尸网络概述 IPK僵尸家族是自2012年底就开始出现并长期持续活跃在境外的DDoS僵尸网络.2016年 ...
- 均匀分布(uniform distribution)期望的最大似然估计(maximum likelihood estimation)
maximum estimator method more known as MLE of a uniform distribution [0,θ] 区间上的均匀分布为例,独立同分布地采样样本 x1, ...
- Creative Cloud 无法连接问题
防火墙允许 PDApp.exe Windows:Program Files\Common Files\Adobe\OOBE\PDApp\core Mac OS:应用程序 > 实用工具 > ...
- Powerpivot PowerBI相关组件下载安装(附操作截图)
加载方式:com加载项加载方法: 点击Excel界面[文件]→[选项]→[加载项]→[COM加载项]→[转到] Excel2013加载PowerView Excel216PowerQuery不需要加载 ...