SSL1194 最优乘车(normal)

2024-01-30 09:38
文章标签 最优 normal 乘车 ssl1194

本文主要是介绍SSL1194 最优乘车(normal),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

快速链接

  • 原题链接
  • 题目大意
  • 输入格式
  • 输出格式
  • 数据范围
  • 解题思路
  • 进阶练习
  • 上代码


原题链接

SSL1194 外网进不去

题目大意

给定 n n n条单向的公交线路,求从 1 1 1号站到 n n n号站的最少转车次数。

输入格式

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

输出格式

一个整数,表示最少步数,如果到达不了,输出NO

S a m p l e \mathbf{Sample} Sample I n p u t \mathbf{Input} Input

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

S a m p l e \mathbf{Sample} Sample O u t p u t \mathbf{Output} Output

2

H i n t & E x p l a i n \mathbf{Hint\&Explain} Hint&Explain
公交线路如图所示。
Explain
先从 1 1 1号点坐车坐到 3 3 3号点,再坐到 6 6 6号点,再坐到 7 7 7号点,总共转车 2 2 2次。

数据范围

对于 100 % 100\% 100%的数据满足: 1 ≤ m ≤ 100 , 1 < n ≤ 500 1 \le m \le 100,1 < n \le 500 1m100,1<n500

解题思路

本题可以用 b f s bfs bfs解决。
我们可以把上面的行车路线,转换成一个邻接矩阵的形式,再进行 b f s bfs bfs
最后转换成的是这个样子:

    1 2 3 4 5 6 7---------------
1 | 0 0 1 0 1 0 0
2 | 1 0 1 0 1 0 0
3 | 0 0 0 0 1 1 0
4 | 0 0 1 0 0 1 1
5 | 0 0 0 0 0 0 0
6 | 0 0 0 0 0 0 1
7 | 0 0 1 0 0 1 0

其中纵坐标代表从哪里出发,横坐标代表到哪里,1代表可以到达,0代表到达不了。
那么,这题就转换成了一个利用邻接矩阵,求 1 1 1号站到 n n n号站的最短步数。

注意事项:

1.这一题的输入是没有给你要输入多少个数的,所以要逐个判断字符,直到读到\n为止,再开始读下一行。
2.公交车是单向的,不是双向的,而且方向是输入的顺序,即从左到右。(当时我就在这里调了半个小时)
3.建立邻接矩阵的时候,要把一条路线上这个点所有的可以到达的都标记为1


最后,祝大家早日
请添加图片描述


进阶练习

洛谷上的题目,和这题题面一样。
P5767 [NOI1997] 最优乘车


上代码

#include<iostream>
#include<cstring>
#include<vector>
#include<queue>using namespace std;queue<int>       q;
int              vis[1010];
int              a[1010][1010];
int              n,m;int main()
{cin>>n>>m;if(m==1){cout<<0<<endl;return 0;}getchar();for(int i=1; i<=n; i++){vector<int> elements;char c;int temp=0;while((c=getchar())!='\n'){if(c==' '){elements.push_back(temp);temp=0;}elsetemp=temp*10+(c-'0');}elements.push_back(temp);temp=0;for(int j=0; j<elements.size(); j++)for(int k=j+1; k<elements.size(); k++)a[elements[j]][elements[k]]=1;}memset(vis,-0x7f,sizeof(vis));q.push(1);vis[1]=-1;while(q.size()){int now=q.front();// cout<<"\t"<<now<<endl;q.pop();if(now==m){cout<<vis[now]<<endl;return 0;}for(int i=1; i<=m; i++)if(i!=now&&a[now][i]&&vis[i]<0){q.push(i);vis[i]=vis[now]+1;}}cout<<"NO"<<endl;return 0;
}

完美切题 ∼ \sim

这篇关于SSL1194 最优乘车(normal)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659814

相关文章

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

华为OD机试 - 最优结果的a数组数量 - 贪心思维(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。 一、题目描述

清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现 及 通过使用文件或者套节字来识别进程的fuser命令

一、清华MEM作业-利用管理运筹学的分析工具slover求解最优解的实现         最近又接触了一些线性求解的问题,以前主要都是在高中数学里接触到,都是使用笔算,最后通过一些函数式得出最小或者最大值,最近的研究生学业上接触到了一个Excel solver分析工具,对这种线性求最优解的问题感觉使用起来真是得心应手。在使用这个工具前,EXCEL里需要先装上solver工具,装起来很也简单,网上

【POJ】2728 Desert King 最优比率生成树——01分数规划【经典】

最近在刷巨巨们放出来的专题,然后没做几题就卡住了,果然还是太弱了T U T... 这次做到了一题01分数规划求解的生成树问题。 题目大意是这样的:给你一个无向完全图,每条边i都有两个权值,长度a[ i ],花费b[ i ],需要选出其中的一些边构造一颗生成树,生成树需要满足条件:∑ b [ i ] / ∑ a [ i ]最小。 这样我还是先来介绍一下01分数规划吧~ 给定一个上述的问

2024国赛数学建模备赛|30种常用的算法模型之最优算法-非线性规划

1.1   非线性规划的实例与定义 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有 单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都 有自己特定的适用范围。 下面通过实例归纳出非线性规划数学模型的一般形式,介绍有关非线性规划的基本 概念。 最佳投资方案应是投资

超好用的图纸加密软件排行榜 | 2024图纸加密软件的七款最优选择!

数字化设计日益普及的今天,图纸作为设计与工程的核心载体,其安全性成为了企业和设计师们最为关注的焦点之一。 面对日益复杂的数据泄露风险,如何有效地保护图纸文件的安全呢? 下面,我们就来探讨一下2024图纸加密软件的最优选择,为您介绍七款超好用的图纸加密软件! 一、域智盾:专业级图纸加密的领军者 ①透明加密 采用基于Windows文件系统驱动开发的透明加密技术,结合高强度国际流行加密算法

CSS-标准文档流(Normal Flow)

目录 1 定义2 脱离文档流3 相对定位文章参考 1 定义 文档流中:内联元素默认从左到右流,遇到阻碍或者宽度不够自动换行,继续按照从左到右的方式布局。块级元素单独占据一行,并按照从上到下的方式布局。 2 脱离文档流 文档一旦脱离文档流,则元素不再按照文档流的排列方式进行排列,如块级元素脱离文档流后,该块级元素不再接着上个元素从上到下排列,而是成为第一个元素,从顶部开始排列

最短路径算法:迪杰克斯拉(Dijkstra)算法(基于贪心思想)【从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题】【能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低】

Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 Viterbi和Dijkstra算法看起来比较像,两者的区别: Dijkstra算法适应范围更广。Viterbi算法用在特殊的有向无环图中,而Dijkstra算法可以用在

【Spfa】noip2009 最优贸易

最优贸易 (trade.pas/c/cpp) 【问题描述】 C 国有n 个大城市和 m 条道路,每条道路连接这n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1 条。    C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同