文章目录

  • 题目描述
    • 输入描述
    • 输出描述
    • 输入
    • 输出
  • 原题
    • 算法描述
    • 解题标程

题目描述

H城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。

一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路已士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士, 这样换乘几次后到达S公园。

现在用整数1,2,…N 给H城的所有的巴士站编号,约定这名旅客所在饭店的巴士站编号为1…S公园巴士站的编号为N。

写一个程序,帮助这名旅客寻找一个最优乘车方案,使他在从饭店乘车到S公园的过程中换车的次数最少。

输入描述

第一行有两个数字M和N(1 ≤ M ≤ 100, 1 < N ≤ 500),表示开通了M条单程巴士线路,总共有N个车站。从第二行到第M刊行依次给出了第1条到第M条巴士线路的信息。其中第i+1行给出的是第i条巴士线路的信息,从左至右按运行顺序依次给出了该线路上的所有站号相邻两个站号之间用一个空格隔开。

输出描述

只有一行。如果无法乘巴士从饭店到达S公园,则输出"NO",否则输出你的程序所找到的最少换车次数,换车次数为0表示不需换车即可到达
示例1

输入

3 7
6 7
4 7 3 6
2 1 3 5

输出

2

原题

链接:https://ac.nowcoder.com/acm/problem/16816
来源:牛客网


算法描述

最初的解题有两个想法:

  • 一、用不同的权值去表示不同的路线,但是这样的写法在后续很难分辨。
  • 二、用dfs算法去搜索所有可以到达 S 公园的路线的转乘情况,并且将每个转乘点用book数组标记出来,但是这个算法也存在一个问题,当我到达转乘点时,不一定就是我要转乘的时候。

后面发现,建图时,将同一线路按照车站的行驶顺序,将每点能到的车站的权值记录为1。
比如 4 -> 7 -> 3 -> 6 这条线路,由4能到的车站有 7 3 6,那么就将e(邻接矩阵)e[4][7]=1,e[4][3]=1,e[4][6]=1。同理,7能到的车站有3 6,那么就将e[7][3]=1,e[7][6]=1。
通过这样的处理就会发现,如果需要转乘,那么在从转乘点到这条线路上的任何点的权值都是1。

  • 有个小难点就是输入数据的处理

解题标程

#include <stdio.h>
#include <string.h>
#define inf 9999999
#define min(x,y) x>y?y:xint m,n;
int a[505];
int e[505][505];int main()
{scanf("%d%d",&m,&n);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i==j) e[i][j]=0;else e[i][j]=inf;for(int i=0;i<m;i++){int k=1;while(1){char ch;scanf("%d",&a[k++]);ch=getchar();if(ch=='\n')break;}for(int i=1;i<k-1;i++)for(int j=i+1;j<k;j++)e[a[i]][a[j]]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(e[i][j]>e[i][k]+e[k][j])e[i][j]=e[i][k]+e[k][j];if(e[1][n]>=inf)printf("NO\n");elseprintf("%d",e[1][n]-1);return 0;
}

牛客网算法题目-最优乘车题解相关推荐

  1. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  2. 牛客网算法工程师能力评估

    牛客网算法工程师能力评估 题目来源:https://www.nowcoder.com/test/200/summary 1.递归算法x(x(8))需要调用几次函数x(int n)? class pro ...

  3. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--01~20 目录 剑指offer--66道在线编程--01~20 1.二维数组中的查找某个targe ...

  4. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--41~66 目录 剑指offer之66道在线编程--41~66 42.和为s的两个数字 43.左旋转 ...

  5. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——21~40

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--21~41 目录 剑指offer之66道在线编程--21~41 21.栈的压入.弹出序列 22.从上 ...

  6. 牛客网算法教程-中级篇-第一章

    文章目录 学习目标: 学习内容: 学习时间: 学习产出: 1.旋转词-模拟 2.旋转矩阵-模拟 3.数轴覆盖-贪心 4.1 完整字符串1(括号字符串的有效性)-栈 4.2 完整字符串2(缺失的括号)- ...

  7. 牛客网算法题 (一) 办公室路径条数解法 Shopee的办公室(二)

    办公室路径走法 题目描述 shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样 ...

  8. 牛客网SQL题目解析(答案+解析+理解)

    本文记录了牛客网sql全部题目的答案与难题解析,部分题目包含多种解法,并且涵盖了开窗函数等各种语法点的理解 标题中高亮的题目,是易错题 牛客网刷题链接:牛客网sql在线练习 本文所有语句使用mysql ...

  9. 牛客网算法——名企面试的笔试(6)

    NC155牛牛的递增数列 package 牛客网名企面试笔试问题2021;import org.junit.Test;/*** @Classname NC155牛牛的数列* @Description ...

  10. 牛客网算法错题笔记总结

    最近在做一些牛客网的编程题和算法题:把一些比较生疏的知识点记下来,自己复习,也供大家参考: 1.给定节点数n后,求二叉树最多的结构 结构数量num = C(2n,n)/n+1;其中n是给定的节点数,比 ...

最新文章

  1. php fread读行,如何使fread阻塞和读取直到结束?
  2. 数据分析必备:掌握这个R语言基础包1%的功能让你事半功倍!(附代码)
  3. 阿里云首发Dubbo3.0 + Nacos2.0
  4. php 扩展apc 参数优化
  5. dsoFramer 的原代码
  6. vue a-sub-menu 添加点击事件报错_Vue+TS 使用的问题(持续更)
  7. 测试人员容易遗漏一些隐藏的缺陷
  8. c语言 main函数
  9. ssg国际数字货币商城源码货币商城+数字货币+双端APP
  10. c c 语言编程项目实例,实例分享cmake编译一个简单c++项目(demo)
  11. 基于.NET实现数据挖掘--关联规则分析算法
  12. 根据href给当前导航添加样式
  13. 一位硕士毕业生三个月求职经历与经验的结晶
  14. comsol和matlab如何连接,comsol与matlab连接
  15. cmd模式下用cd命令进入其他盘或者文件夹
  16. Visual studio2022“无法生成.exe文件,系统找不到指定文件
  17. ciscoVLAN配置典型案例,很实用。
  18. kaggle论文阅读
  19. 数据结构 图 思维导图上
  20. python中ipo模式是什么意思呢_Python 之 简单的IPO模式

热门文章

  1. baacloud苹果_baacloud官网下载
  2. 最新版idm下载器(Internet Download Manager)视频嗅探神器
  3. mac电脑利用file和iconv命令修改文件编码
  4. Android 跑马灯效果与EditText冲突
  5. 无root权限安卓真机抓包HTTPS
  6. 视频教程-带你轻松入门MATLAB-Matlab
  7. orcadcapture安装_OrCAD下载
  8. 《Java语言程序设计》(基础篇原书第10版)第十章复习题答案
  9. SVM之Libsvm工具包的安装教程
  10. 计算机管理格式化没有顺利完成,内存卡无法格式化