最优乘车(bfs)

该博客介绍了如何利用宽度优先搜索(BFS)算法来解决一个旅游者在H城寻找最优乘车方案的问题,以最小化换乘次数。题目中旅客从编号为1的饭店出发,目标是达到编号为N的S公园。博客提供了输入输出示例,并解释了在处理不同路线代价时的预处理步骤,以及在BFS过程中标记已走过站点的重要性。
摘要由CSDN通过智能技术生成

最优乘车

Description:
* 
  H城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。
  一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路已士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士, 这样换乘几次后到达S公园。
  现在用整数1,2,…N 给H城的所有的巴士站编号,约定这名旅客所在饭店的巴士站编号为1…S公园巴士站的编号为N。
  写一个程序,帮助这名旅客寻找一个最优乘车方案,使他在从饭店乘车到S公园的过程中换车的次数最少。

Input

输入的第一行有两个数字M和N(1<=M<=100 1

Output

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

Sample Input

3 7
6 7
4 7 3 6
2 1 3 5
Sample Output

2 *
在这里插入图片描述
由题意得:最优化问题!!我们可以用bfs.由于他们的代价不同,所以我们要预处理。

for(int i=1;i<=text[0]-1;i++)
		for(int j=i+1;j<=text[0];j++)
			a[text[i]][text[j]]=1;

将他们只要是同一条巴士线路的站点的代价都设为一。
解决了代价问题,即可用bfs求解。(注意要标识走过的点!!

void bfs()
{
   
	int head=0,tail=1;
	fa[1]=1;temp[1]=-1;f[1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值