1018 Public Bike Management (30) Dijkstra算法 + DFS
题目及题解
https://blog.csdn.net/CV_Jason/article/details/81385228
迪杰斯特拉重新认识
两个核心的存储结构:
int dis[n]; //记录每个点到源头的最短距离
bool mark[n]; //标记每个顶点到
/*如果想要保存路径,创建一个 二维数组,或者vector【n】,
里面的每个一维数组表示到达该节点的前一个节点,在(u为当前选出的新节点)当dis[v]==dis[u]+e[u][v],说明通过u到达v的路径也是最短路径,于是把u加入vector【v】;
如果(u为当前选出的新节点)当dis[v]>dis[u]+e[u][v],则说明有更短的路径,于是vector【v】.clean();清空vector【v】,然后加入u
这样任意一点x,(像遍历树一样)只使用dfs/bfs就能把所有从x到源的路径求出;
一个核心公式:
e[a][b]+dis[b]<e[a]; //当通新加入的节点b到达a的路程 ,比已知的到a的路程短,则把dis[a]更新为e[a][b]+dis[b];
流程:
初始化:
dis 设置成inf //自定义无穷
mark 设置成false
dis[0]设置成0 //0可换成任意一点源
执行核心过程:
for(n次,每次加入一个点)
{ 设置两个变量记录每次找的最小的点的 下标和距离
for(n次,找一个未加入的点)
{ 当if(mark【i】==false&&dis【i】<minDis)则更新下标和当前发现的最小距离}
for(n次,检查是否能用新的点更新原来dis【n】)
{}
}
深度优先 复习
外界 stack/vector
dfs(x)
{ s或v push(x)
if(x为最深一层)
{一系列的处理操作}
for(能从x往下走的路)
{ dfx(x+/-1) }
s或v pop;//回溯到没有上一层的x,继续执行上一层for(x的下一条路 )的
}
1018 Public Bike Management (30) Dijkstra算法 + DFS的更多相关文章
- PAT Advanced 1018 Public Bike Management (30) [Dijkstra算法 + DFS]
题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...
- PAT 甲级 1018 Public Bike Management (30 分)(dijstra+dfs,dfs记录路径,做了两天)
1018 Public Bike Management (30 分) There is a public bike service in Hangzhou City which provides ...
- PAT 1018 Public Bike Management(Dijkstra 最短路)
1018. Public Bike Management (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- 1018 Public Bike Management (30 分)
There is a public bike service in Hangzhou City which provides great convenience to the tourists fro ...
- 1018. Public Bike Management (30)
时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue There is a public bike service i ...
- 1018 Public Bike Management (30分) 思路分析 + 满分代码
题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...
- 1018 Public Bike Management (30)(30 分)
时间限制400 ms 内存限制65536 kB 代码长度限制16000 B There is a public bike service in Hangzhou City which provides ...
- 1018 Public Bike Management (30分) PAT甲级真题 dijkstra + dfs
前言: 本题是我在浏览了柳神的代码后,记下的一次半转载式笔记,不经感叹柳神的强大orz,这里给出柳神的题解地址:https://blog.csdn.net/liuchuo/article/detail ...
- 1018 Public Bike Management (30分) (迪杰斯特拉+dfs)
思路就是dijkstra找出最短路,dfs比较每一个最短路. dijkstra可以找出每个点的前一个点, 所以dfs搜索比较的时候怎么处理携带和带走的数量就是关键,考虑到这个携带和带走和路径顺序有关, ...
随机推荐
- JAVA获取运行程序的src路径
JavaPrj使用: System.getProperty("user.dir")+"\\src"或直接"\\src"JavaWeb使用Th ...
- k8s学习笔记之二:使用kubeadm安装k8s集群
一.集群环境信息及安装前准备 部署前操作(集群内所有主机): .关闭防火墙,关闭selinux(生产环境按需关闭或打开) .同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 .关闭swap ...
- toString 和new String()区别
public class NewStringTestDemo { public static void main(String[] args) { String s = "你好"; ...
- SpringMVC - 运行流程图及原理分析
流程示意图: 代码分析图:
- WPF canvas设置旋转角度和偏移位置
/// <summary> /// 设置旋转角度和位置 /// </summary> /// <param name="Angle">角度< ...
- 63.1拓展之纯 CSS 创作一个摇摇晃晃的 loader
效果地址:https://scrimba.com/c/cqKv4VCR HTML code: <div class="loader"> <span>Load ...
- 注解_Annotation
---恢复内容开始--- 一.什么是注解 注解,英文Annotation,它不是程序本身,是对程序的解释,在这里我会想到为什么不能使用注释呢,因为注解是关于程序对信息的处理的流程的一些说明,而且格式也 ...
- 发送Http
/** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1& ...
- 002之MFCSocket异步编程
当今的网络程序通用体系结构大多为C/S模式,服务器监听收到来自客户端的请求,然后响应并作出应答. 界面对话框如下,输入IP信息进行通信后再进行连接,连接成功即可开始通信.左侧为客户端,右侧为服务端. ...
- TensorFlow Android Camera Demo 使用android studio编译安装和解决Execution failed for task ':buildNativeBazel'报错
可以参考官网:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android#android-stud ...