Skip to content

zhaihaotian/Teamwork_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 

Repository files navigation

地铁导航线路

一共有7个功能 详细见使用方式

实现方式

主要使用了dijkstra的单源最短路算法

在考虑换乘时,我们的方法是对于同一站点所在不同线路的情况,将一个站点拆分成多个点,例如出在1号线的a点,处在2号线的a点,并且在他们之间连边以表示换乘所需要的时间。

最后在这样一个包含虚点的图上跑dijkstra算法 同时记录前驱 表示谁更新的自己 最后输出路径时不断寻找前驱 直到找到终点

编译环境

本项目所有代码使用c++11完成

输入文件,输出文件,main均使用utf-8编码 如出现乱码 请确保您的使用utf-8打开 并使用utf-8编码输出 (建议使用vscode打开 并在tasks.json中的args加入类似"-fexec-charset=UTF-8"的指令)

使用方式

在read.in中输入

先输入一个数字表示需求类型

1 start_name end_name 表示寻找一条从起点到终点的耗时最短路径

2 start_name end_name 表示寻找一条从起点到终点的时间相对较短 但又少换乘

3 start_name end_name1 end_name2 表示二人一起从起点出发 去到不同的终点 但是要求尽量有多的一起走的路程 输出两种方案

4 起点名字 终点名字 途径站点的数量 依次输入站点 表示从起点到终点 并且依次经过中转点的路程

5 起点名字 终点名字 途径站点的数量 依次输入站点 表示从起点到终点 需要经过的中转点 程序会给出以何种顺序访问这些中转点时间最少

6 起点名字 终点名字 此时哪条线路停运了 表示在这条站点停运的情况下的路线

7 起点名字 终点名字 计算所需要的钱

使用实例

参见read.in 和 ans.out

About

2023BUCT年大二上数据结构小组作业

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages