【现实生活实际应用】【公交车换乘算法——算法用在公交车】【bfs在图论】【单源最短路-如何根据图意构建图,最重要】最优乘车【sstream输入】

news2024/12/28 13:19:24

在这里插入图片描述

问题出现了
其实我们构图的时候,
我们已经知道1 - 3 - 5
那么我们直接让1 连到 3 和 5 表示直达
如果出现另一路 4 7 3 6

则3最终连接的是 5 和 6
从1开始,先走到了 3 和 5
然后bfs宽搜到3(此时就表示换乘了,因为1直达的已经都遍历完了)然后3 连接的是 6
再次宽搜到5发现没有换车了
再搜6
发现到7了 (此时再次换车)
按着上述逻辑
看代码
就能理解代码了

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

最优乘车

        • 题意分析
        • 补充说明 sstream的用法

原题链接
在这里插入图片描述

题意分析

给了3条路线
6 7
4 7 3 6
2 1 3 5

问 1 - 7 最少换几次公交车?

怎么做呢?

这种题是图论,
首先想到构建图,进行分析

那么如何构建图?
我们分析

由于问的是 1 - 7 最小换成

我们发现

必须先坐3号线
1 - 到 3点

然后 3点可以继续坐到 5点

或者 换车到 6点

分析到这里,我们想一下,
如果我们问 1 - 5 最小换车次数
那么就是0呀

但是 1 - 6呢
那就是 1

我们开始构图

1点到3点的距离是 0 或者 1
用 1 或者 0都可以

我们就用1

那么 3 到 5的距离 是 1
那么我们分析
1 - 5 应该是0的呀

问题出现了
其实我们构图的时候,
我们已经知道1 - 3 - 5
那么我们直接让1 连到 3 和 5 表示直达
如果出现另一路 4 7 3 6

则3最终连接的是 5 和 6
从1开始,先走到了 3 和 5
然后bfs宽搜到3(此时就表示换乘了,因为1直达的已经都遍历完了)然后3 连接的是 6
再次宽搜到5发现没有换车了
再搜6
发现到7了 (此时再次换车)
按着上述逻辑
看代码
就能理解代码了

#include<iostream>
#include<algorithm>
#include<sstream>
#include<queue>
#include<cstring>

using namespace std;

const int N = 510;

int g[N][N];
int n,m;
int a[N];
int d[N];

void bfs()
{
    queue<int> q;
    q.push(1);
    
    memset(d,0x3f,sizeof d);
    d[1] = 0;
    
    while(q.size())
    {
        auto t = q.front(); q.pop();
        // cout << t << ' ' << d[t] << endl;
        for(int i = 1; i <= n; i++)
        {
            if(g[t][i] && d[i] > d[t] + 1)
            {
                d[i] = d[t] + 1;
                q.push(i);
            }
        }
        
    }
}

int main()
{
    cin >> m >> n;
    getchar();
    while(m--)
    {
        string line;
        getline(cin,line);
        stringstream ssin(line);
        int cnt = 0,p;
        while(ssin >> p)
        {
            a[cnt++] = p;
        }
        for(int i = 0; i < cnt; i++)
        {
            for(int j = i + 1; j < cnt; j++)
            {
                g[a[i]][a[j]] = 1;
            }
        }
        
    }
    bfs();
    if(d[n]!=0x3f3f3f3f)
        cout << max(0,d[n]-1);
    else
        cout << "NO";
    
    return 0;
}

补充说明 sstream的用法

#include<sstream>
getchar();//处理换行符
string line;
getline(cin,line);
streamstring ssin(line);
while(ssin >> x)//ssin就表示和正常读取一样,什么数据类型读取什么即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/583002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式网络通信框架(十五)——Mprpc项目总结

程序调用时序图 下图介绍了项目代码的调用时序&#xff0c;从rpc服务提供方开始看 简单描述项目、实现了怎样的功能&#xff1f;采用了哪些技术栈 这个项目是基于C语言实现的一个RPC分布式网络通信框架项目&#xff0c;使用CMake在Linux平台上构建编译环境。它可以将任何单体…

北醒Modbus协议在Python下Tkinter模块实现功能配置的GUI设计

目录 实验目的测试环境Python库需求Benewake(北醒) TF雷达接线示意图库安装说明例程运行展示 实验目的 实现485接口系列雷达Modbus协议在Python下Tkinter模块实现功能配置的GUI设计。 本例程主要功能如下&#xff1a; 1.设备连接&#xff08;已知雷达设备的波特率和站号&#…

投票评选活动小程序怎么做

投票评选活动小程序怎么做&#xff0c;做一下笔记&#xff0c;记录一下分析、开发搭建的过程。 焦点图 焦点图用于主题展示。焦点图使用了image组件&#xff0c;其中mode为设置图片裁剪、缩放的模式。widthFix缩放模式&#xff0c;宽度不变&#xff0c;高度自动变化&#xff0…

【Stata】teffects和psmatch命令区别联系 | ATE/ATU/ATT实际计算原理

这里主要是做个学习记录。 参考链接来自&#xff1a; https://www.ssc.wisc.edu/sscc/pubs/stata_psmatch.htm 很经典的一篇帖子 以下主要是对用到的stata命令和过程做个记录 &#xff08;以下内容需要一点点的psm基础&#xff0c;包括ate、atu、att&#xff0c;psm处理流程等…

为每个项目单独设置node版本

如果你同时开发多个项目&#xff0c;每个项目所需的node版本又不相同&#xff0c;那么你需要为每个项目单独设置node版本。 node官网上介绍了几种版本管理工具&#xff0c;有&#xff1a;n&#xff0c;nodenv&#xff0c; nvm。 Installing Node.js via Package Manager node…

【创作纪念日】时间如梭,梭梭催我进步,在CSDN这5年,收获、成长与荣誉并存。

1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 恭喜啊。 小鱼&#xff1a;啥情况&#xff0c; 给我整蒙圈了。 小屌丝&#xff1a;你的朋友圈啊。 小鱼&#xff1a;我的朋友圈咋了&#xff0c; 你看好哪个了&#xff1f; 嘿…嘿…嘿…嘿… 小屌丝&#xff1a;CSDN 创作5周年纪念…

【Power BI 技巧】如何生成动态指标散点图

前言 本文介绍如何在Power BI中创建动态散点图&#xff0c;可以自由切换X轴和Y轴的指标。 数据下载&#xff1a; 使用的是CSDN后台的单篇文章分析数据&#xff0c;在“作品数据”页点击“导出数据”。 因为都是累计值&#xff0c;所以用了两天的数据&#xff0c;手动添加…

python+vue面向大学生的校内交友推荐系统

基于Python语言、django框架、B/S架构、Mysql数据库设计并实现了面向高校学生的校内交友推荐系统。系统主要包括用户、活动信息、活动分类、交友信息、互助信息、热点新闻、校园广场等功能模块。 网络交友较之其它交友方式更加经济、安全、健康。现在的上网条件非常的便利&…

深度学习进阶篇-国内预训练模型[6]:ERNIE-Doc、THU-ERNIE、K-Encoder融合文本信息和KG知识;原理和模型结构详解。

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

计算机网络第一章——计算机体系结构(上)

提示&#xff1a;剑未佩妥&#xff0c;出门已是江湖&#xff1b;酒尚余温&#xff0c;入口不识乾坤&#xff0c;愿历尽千帆&#xff0c;归来仍是少年。 文章目录 1.1.1 概念和功能计算机网络的概念计算机网络的功能计算机网络的发展——第一阶段第二阶段——三级结构第三阶段—…

生活-考驾照2

昨日已通过科目一&#xff0c;接下来&#xff0c;向着科目二出发&#xff01;&#xff01;&#xff01; 考试注意事项 就考前一周死命刷题&#xff0c;至少一天有三次93以上的记录&#xff0c;我也就最后一天达到90&#xff0c;之前一直马路杀手刷题&#xff0c;我就在网页版…

泰国这场发布会,UTONMOS元宇宙游戏玩出炫酷新花样

Sensor Tower 最近发布的一项报告显示&#xff0c;全球元宇宙 App 下载量在 2022 年H1 达到 1.7 亿次&#xff0c;其中游戏达到了 1.1 亿次&#xff0c;占比 67.3%。在营收方面&#xff0c;元宇宙 App 在 H1 共获得 6.5 亿美元收入&#xff0c;游戏占 94%&#xff0c;达到 6.4 …

中低压母线室弧光保护装置在水电站的应用

摘要&#xff1a;本文介绍了电弧光保护在水电站的配置及应用&#xff0c;提供给相关人员参考。 关键词&#xff1a;水电站&#xff1b;开关柜&#xff1b;电弧光 0前言 电弧光是由于发生相间短路或接地短路时空气电离而形成的。在我国电力系统中开关柜内部电弧光故障时有发生…

整数口算练习“小程序”

设定练习题目数量、最大取值整数数&#xff0c;即时判定&#xff0c;答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

Centos stream 8 使用 cephadm 安装 Ceph (17.2.6 quincy)集群

一、环境 1、机器列表 名称IP角色备注cephnode12010.0.49.120_admin双网卡 双硬盘/sda/60G /sdb/160Gcephnode12110.0.49.121_storage双网卡 双硬盘/sda/60G /sdb/160G cephnode12210.0.49.122_storage双网卡 双硬盘/sda/60G /sdb/160G 2 、软件环境 [rootcephnode120 …

2:异常处理

文章目录 一&#xff1a;try catch处理异常1&#xff1a;原理&#xff1a;2&#xff1a;catch中如何处理异常**3&#xff1a;try-catch-finally**4&#xff1a;多重catch5&#xff1a;异常的分类6&#xff1a;throw和throws的区别7&#xff1a;练习题8&#xff1a;重载和重写的…

C语言-【指针三】-【野指针】

我又来了&#xff0c;勤奋博主上线啦&#xff0c;哈哈哈。本篇文章呢&#xff0c;主要简单介绍一下指针中野指针的相关知识。 野指针 那在对它进行深入了解时&#xff0c;先得知道什么叫野指针吧&#xff0c;那什么是野指针呢&#xff1f; 野指针就是&#xff1a;指向的内存地…

An illegal reflective access operation has occurred警告

问题描述 今天 在 install Maven项目的时候&#xff0c;控制台出现警告如下&#xff1a; WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/E:/DevelopmentKit/Maven/…

【送书福利-第六期】Java诞生日,推荐Java“此生错过必遗憾”系列书单

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、推荐书籍三、抽奖方…

三维电子沙盘虚拟数字沙盘开发教程第9课

三维电子沙盘虚拟数字沙盘开发教程第9课 查询面板调用&#xff1a; private void Button_Click_11(object sender, RoutedEventArgs e) { GisLib.MapSech _Sech new MapSech(); //查询面板 Root.Children.Add(_Sech); Canvas.Se…