刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

路线

题目描述:

有一个旅游景区,景区中有N个景点,景点以数字1到N编号,其中编号为N的景点为游客服务中心所在地。景区中有M条连接路线,每条路线连接两个景点。

已知:

1)一个景点可以被多条路线连接;

2)景点之间的连接路线都可以双向行走;

当给出N个景点和M条连接路线,及M条路线的连接关系,请你计算出从编号1到编号N-1的每一个景点,到达游客服务中心至少需要经过几条路线,如果某个景点不能到达游客服务中心则输出“-1”。

例如:N=5,M=4,4条路线的连接关系为:1<->2、1<->3、2<->4、2<->5,

景点1到达景点5(游客服务中心)至少经过2条路线(路线2、路线4);

景点2到达景点5(游客服务中心)至少经过1条路线(路线4);

景点3到达景点5(游客服务中心)至少经过3条路线(路线1、路线2、路线4);

景点4到达景点5(游客服务中心)至少经过2条路线(路线3、路线4);

输入描述:

第一行输入两个正整数N和M(4<=N<=100,1<=M<=100),N表示景点个数,M表示路线条数,两个正整数之间一个空格隔开

接下来输入M行,每行包括两个正整数S,E(1≤S≤N,1≤E≤N,S!=E),两个正整数之间一个空格隔开,表示编号S和编号E的两个景点有一条路线连接

输出描述:

一行输出多个整数。按照1到N-1的编号顺序,分别输出每个景点到达编号N(游客服务中心),经过几条路线可以到达,如果某个景点不能到达则输出“-1”,整数之间一个空格隔开


样例输入:

5 4
1 2
1 3
2 4
2 5

样例输出:

2 1 3 2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

2 1 3 2

解析:

【喵呜刷题小喵解析】:
本题是一道关于最短路径的问题,可以使用广度优先搜索(BFS)算法来解决。

首先,我们需要构建一个邻接表来表示景点之间的连接关系。对于每个景点,我们将其连接的景点编号和路线数量存储在一个列表中。

然后,我们使用BFS算法从景点1开始,依次遍历所有景点,计算从景点1到每个景点的最短路径。在遍历过程中,我们使用一个队列来存储待访问的景点,使用一个数组来记录每个景点是否已经访问过,使用一个数组来记录从景点1到每个景点的最短路径长度。

具体步骤如下:

1. 初始化队列和数组,将景点1加入队列,将景点1的最短路径长度设为0。
2. 从队列中取出一个景点,如果该景点已经访问过,则跳过;否则,将该景点标记为已访问,并继续遍历其相邻景点。
3. 对于每个相邻景点,如果它还没有被访问过,则将其加入队列,并更新其最短路径长度。最短路径长度等于当前景点的最短路径长度加1。
4. 重复步骤2和3,直到队列为空。

最后,我们输出从景点1到每个景点的最短路径长度。如果某个景点不能到达,则输出“-1”。

对于本题,N=5,M=4,连接关系为1<->2、1<->3、2<->4、2<->5。我们可以构建如下邻接表:

景点1:2(1条路线)、3(1条路线)
景点2:4(1条路线)、5(1条路线)
景点3:1(1条路线)
景点4:2(1条路线)
景点5:2(1条路线)

使用BFS算法,我们可以得到从景点1到每个景点的最短路径长度:

景点1到景点2:1条路线
景点1到景点3:2条路线
景点1到景点4:3条路线
景点1到景点5:2条路线

因此,输出结果为2 1 3 2。
创作类型:
原创

本文链接:路线 题目描述: 有一个旅游景区,景区中有N个景点,景点以数字1到N编号,其中编号为N的景点为游客服

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share