包含一号线、二号线全部,还有两小段
数据来自北京地铁官网



资源链接

https://download.csdn.net/download/renzemingcsdn/44352688

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <string>
using namespace std;const int MAX_N = 99;
const int INF = 999999;// 各数组都从下标1开始
int dst[MAX_N];     // 表示当前点到源点的最短路径长度
int prv[MAX_N];     // 记录当前点的前一个结点
int c[MAX_N][MAX_N];   // 记录图的两点间路径长度
int n=46, line=0;             // 图的结点数和路径数void Dijkstra(int n, int v)
{bool vis[MAX_N];    // 判断是否已存入该点到S集合中for (int i = 1; i <= n; ++i){dst[i] = c[v][i];vis[i] = 0;     // 初始都未用过该点if (dst[i] == INF)prv[i] = 0;elseprv[i] = v;}dst[v] = 0;vis[v] = 1;// 依次将未放入S集合的结点中,取dst[]最小值的结点,放入结合S中// 一旦S包含了所有V中顶点,dst就记录了从源点到所有其他顶点之间的最短路径长度// 注意是从第二个节点开始,第一个为源点for (int i = 2; i <= n; ++i){int tmp = INF;int u = v;// 找出当前未使用的点j的dst[j]最小值for (int j = 1; j <= n; ++j)if ((!vis[j]) && dst[j] < tmp){u = j;              // u保存当前邻接点中距离最小的点的号码tmp = dst[j];}vis[u] = 1;    // 表示u点已存入S集合中// 更新dstfor (int j = 1; j <= n; ++j)if ((!vis[j]) && c[u][j] < INF){int newdst = dst[u] + c[u][j];if (newdst < dst[j]){dst[j] = newdst;prv[j] = u;}}}
}
void c_init() {for (int i = 0; i < MAX_N; i++) {dst[i] = INF;for (int j = 0; j < MAX_N; j++) {c[i][j] = INF;}}c[1][2] = c[2][1] = 2606;c[2][3] = c[3][2] = 1921;c[3][4] = c[4][3] = 1953;c[4][5] = c[5][4] = 1479;c[5][6] = c[6][5] = 1810;c[6][7] = c[7][6] = 1778; c[7][8] = c[8][7] = 1313;c[8][9] = c[9][8] = 1172;c[9][10] = c[10][9] = 1166;c[10][11] = c[11][10] = 1291; c[11][12] = c[12][11] = 424;c[12][13] = c[13][12] = 1590;c[13][14] = c[14][13] = 1217;c[14][15] = c[15][14] = 925;c[15][16] = c[16][15] = 852;c[16][17] = c[17][16] = 774;c[17][18] = c[18][17] = 1230;c[18][19] = c[19][18] = 1372;c[19][20] = c[20][19] = 790;c[20][21] = c[21][20] = 1385;c[21][22] = c[22][21] = 1673;c[22][23] = c[23][22] = 1714;c[12][24] = c[24][12] = 1832;c[24][25] = c[25][24] = 960;c[25][26] = c[25][26] = 909;c[26][27] = c[27][26] = 1899;c[27][28] = c[28][27] = 1766;c[28][29] = c[29][28] = 1237;c[29][30] = c[30][29] = 794;c[30][31] = c[31][30] = 2228;c[31][32] = c[32][31] = 824;c[32][33] = c[33][32] = 1024;c[33][18] = c[18][33] = 1763;c[34][18] = c[18][34] = 945;c[34][35] = c[35][34] = 1023;c[35][36] = c[36][35] = 1034;c[36][37] = c[37][36] = 1171;c[37][38] = c[38][37] = 851;c[38][39] = c[39][38] = 939;c[12][39] = c[39][12] = 1234;c[26][40] = c[40][26] = 1025;c[40][41] = c[41][40] = 1100;c[41][42] = c[42][41] = 1100;c[42][43] = c[43][42] = 869;c[43][13] = c[13][43] = 1011;c[13][38] = c[38][13] = 815;c[30][44] = c[44][30] = 866;c[44][45] = c[45][44] = 791;c[45][46] = c[46][45] = 1016;c[46][47] = c[47][46] = 848;c[47][17] = c[17][47] = 945;c[17][35] = c[35][17] = 821;
}
map<string, int> mp_stoi = {{"pingguoyuan",1},
{"gucheng",2},
{"bajiao amusement park",3},
{"babaoshan",4},
{"yuquanlu",5},
{"wukesong",6},
{"wanshoulu",7},
{"gongzhufen",8},
{"militayr museum",9},
{"muxidi",10},
{"nanlishilu",11},
{"fuxingmen",12},
{"xidan",13},
{"tian anmen west",14},
{"tian anmen east",15},
{"wangfujing",16},
{"dongdan",17},
{"jianguomen",18},
{"yonganli",19},
{"guomao",20},
{"dawanglu",21},
{"sihui",22},
{"sihui east",23},{"fuchengmen",24},
{"chegongzhuang",25},
{"xizhimen",26},
{"jishuitan",27},
{"guloudajie",28},
{"andingmen",29},
{"yonghegong",30},
{"dongzhimen",31},
{"dongshisitiao",32},
{"chaoyangmen",33},
{"beijingzhan",34},
{"chongwenmen",35},
{"qianmen",36},
{"hepingmen",37},
{"xuanwumen",38},
{"changchunjie",39},
{"xinjiekou",40},
{"pinganli",41},
{"xisi",42},
{"lingjinghutong",43},
{"beixinqiao",44},
{"zhangzizhognlu",45},
{"dongsi",46},
{"dengshikou",47},
};
int main()
{c_init();string s;getline(cin, s);int i;for (i = 0; i < s.size(); i++) {if (s[i] == ';') {break;}}string s1, s2;s1=s.substr(0,i);s2 = s.substr(i + 1, s.size()-1);int start, end;start = mp_stoi[s1];end = mp_stoi[s2];if (start == 0 || end == 0) {return -1;}Dijkstra(47, start);int l = dst[end];if (l <= 6000) {cout << 3 << endl;}else if (l <= 12000) {cout << 4 << endl;}else if (l <= 22000) {cout << 5 << endl;}else if (l <= 32000) {cout << 6 << endl;}else {cout << (6 + (l - 32) % 20 + 1) << endl;}
}

北京地铁票价查询系统 c++ Dijkstra算法相关推荐

  1. c++实现北京地铁线路查询系统

    //使用前将bgstations.txt(文件的内容在代码末尾)放在与cpp文件的同一位置 #include<stdio.h> #include<string.h> #incl ...

  2. 简单成都地铁信息查询系统,BFS算法实现最短路径查找

    前言 最近数据结构期末作业要求做一个成都地铁信息系统,在网上查阅了相关资料之后,做了出来,因为复用性极强,且代码注释都比较详细,于是决定分享出来 思路 总的来说就是从两个文本文件中读入站点和站点信息, ...

  3. 石家庄地铁线路查询系统

    石家庄地铁线路查询系统开发: 合作人:张旺 数据库的设计为:建立了一张表,有line_id(路线号).stop_id(站号).stop_name(站名).change(某站可换乘的线号)这几列. st ...

  4. Java、JSP地铁线路查询系统

    技术:Java.JSP等 摘要: 南京市地铁线路查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活.社会生产和流通领域的关键环节.南京市地铁线路查询系统的发展一直处于一个较落后 ...

  5. 地铁线路查询系统的设计与实现

    技术:Java.JSP等 摘要: 南京市地铁线路查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活.社会生产和流通领域的关键环节.南京市地铁线路查询系统的发展一直处于一个较落后 ...

  6. 运用BFS算法实现北京地铁路线换乘系统

    本文通过我做过的一个小项目来分享一下如何通过BFS搜索算法实现北京地铁换乘路线.搜索的规则分别为最短距离与最少换乘线路.BFS算法的原理这里就不讲了,推荐一个B站的视频,对搜索算法讲解的很清晰: BF ...

  7. 基于qt和mysql的地铁线路系统_[源码和文档分享]基于QT实现的可视化地铁换乘查询系统...

    1.1 题目 上海的地铁交通网络已经基本成型,建成的地铁线十多条,站点上百个,现需建立一个换乘指南打印系统,通过输入起点和终点站,打印出地铁换乘指南,指南内容包括起点站.换乘站.终点站. 图形化显示地 ...

  8. 基于QT实现的可视化地铁换乘查询系统

    1.1 题目 上海的地铁交通网络已经基本成型,建成的地铁线十多条,站点上百个,现需建立一个换乘指南打印系统,通过输入起点和终点站,打印出地铁换乘指南,指南内容包括起点站.换乘站.终点站. 图形化显示地 ...

  9. 地铁逃生的服务器正在维护吗,LifeKeeper为北京地铁保护维护系统

    SteelEye与阿尔斯通日前联合宣布,将部署SteelEye® LifeKeeper® for Linux,为北京地铁2号线维护系统服务中的关键应用提供保护.地铁2号线是连接北京市郊的快速轨道交通网 ...

最新文章

  1. Kprobe在Linux kernel debug中的应用
  2. 接口映射的实现及原理
  3. u盘装系统学计算机好,教你如何使用u盘做系统
  4. 【API进阶之路】高考要考口语?我用多模态评测API做了一场10w+刷屏活动
  5. 硬件基础知识(7)---电容1
  6. 自检代码中trustmanager漏洞_Windows内核漏洞利用教程
  7. HOOK使用:全局键盘钩子
  8. 为什么人家每天睡觉是自然醒,我每天是穷醒?
  9. win10开启cpu虚拟化
  10. 58欧氏空间05——对称变换和对称矩阵、实对称矩阵的标准形、正交相似
  11. word文档保存的时候,就会出现“文件许可权错误,word 无法完成保存文件”的提示
  12. stata画时间趋势图时横坐标标签太长重叠怎么办
  13. detach分片表非常慢的一个案例
  14. 音视频从入门到精通——FFmpeg之swr_convert音频重采样函数分析
  15. Excel:文本型日期转化为数值型日期
  16. python3+scrapy+selenium爬取英雄联盟英雄资料
  17. pre 图像稳定_什么是图像稳定,它如何工作?
  18. 微软服务器操作系统软件价格,供应微软服务器操作系统软件
  19. HDC2021技术分论坛:HarmonyOS低代码开发介绍
  20. 【Hyper-V 虚拟化技术】

热门文章

  1. linux安装完mysql后如何初始化,linux yum安装mysql后要注意的一些初始化问题linux服务器应用 -电脑资料...
  2. 银行卡号,指定字符长度分割字符串
  3. acm模板 java_java 之acm模板
  4. javascript提醒
  5. linux下imp导入oracle数据库,Oracle数据库Linux下的导入IMP
  6. idea中使用git只add部分module的更新
  7. php 格式化js文件,vscode编辑器在php文件中的html/js格式化解决方案
  8. mysql5.7.11升级_MySQL升级从5.6.18到5.7.11
  9. Formview的自动绑定
  10. 2018-09-29 摘抄eDP取代LVDS视频接口