【C++】交通咨询系统(最短路径问题)

该博客介绍了如何使用C++编程实现一个交通咨询系统,解决最短路径问题。系统包括输入城市信息、显示城市间直接距离、计算任意两点间最短路径的功能,采用弗洛伊德算法。示例展示了6个城市和10条边的输入及预期输出。
摘要由CSDN通过智能技术生成
  1. 交通咨询系统(最短路径问题)
    3.1 【问题描述】
    给定一个地区的n个城市间的距离网,计算任意两个城市之间的最短路径。
    3.2 【基本要求】
    程序包含4个模块:
    (1)输入城市信息;城市之间的距离网用邻接矩阵表示,如图2所示。(至少要求6个城市,10条边,设定9999为不可达)
    图2 城市网的邻接矩阵定义在这里插入图片描述
    (2)打印城市信息和城市之间的直接可达距离;
    输出格式要求:城市的列表如下,共有5个城市:
    ( 1)太原( 2)北京( 3)上海
    ( 4)深圳( 5)广州
    太原到北京距离15万公里;
    太原到上海距离20万公里;
    太原到广州不能直接到达;
    注意: 城市及编号可以任意设定,但必须按输出格式要求显示;距离和可否直接可达可以虚构。
    (3)计算任意两个城市之间的最短路径;
    格式要求:提示用户输入选择的起点城市序号和终点城市序号,如果输入的城市序号不在,提示出错并请用
    户重新输入;
    输出起点城市到终点城市的最短路径及路径长度
    (4)退出

这个用的是弗洛伊德算法,算法原理这里不再赘述,网上讲解资源很多。
直接上代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>

using namespace std;

const int N = 210, M = 1000, INF = 0x3f3f3f3f;

int n,m;//城市数,边数
int g[N][N],path[N][N];//g为邻接矩阵,path矩阵表示到达终点所需要经过的中间点
unordered_map<int, string> d; //建立一个序号与城市之间映射的散列表

//函数声明
void shuru(); //输入城市信息
void printCityInfo(); //打印城市信息
void floyd(); //弗洛伊德算法
void query(); //计算任意两个城市之间的最短路径

//用来存边
struct Edge
{
   
    int a,b,w;

}edges[M];

//输入城市信息
void shuru()
{
   
    //初始化邻接矩阵
//    for(int i = 1; i <= n; i++)
//        for(int j = 1; j <= n; j++)
//            if(i == j) g[i][j] == 0;
//            else g[i][j] = INF;
    memset(g, 0x3f, sizeof g);

    printf("请输入城市数n和边数m:\n");
    scanf("%d%d",&n,&m); //输入城市数,边数


    //请输入n个城市名称,用空格隔开:
    printf("请输入n个城市名称,用空格隔开:\n");
    for(int i = 1; i <= n; i++)
    {
   
        string cityname;
        cin >> cityname;
        d[i] = cityname;
    }

    printf
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值