最优乘车


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

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

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

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


输入格式
第一行有两个数字 MM 和 NN ( 1 \le M \le 100 1≤M≤100 , 1 < N \le 500 1<N≤500),表 示开通了 MM 条单程巴士线路,总共有 NN 个车站。

从第二行到第 MM 行依次给出了第 11 条到第 MM 条巴士线路的信息。其中第 i+1i+1 行给出的是第 ii 条巴士线路的信息,从左至右按运行顺序依次给出了该线路上的所有站号相邻两个站号之间用一个空格隔开。


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


输入输出样例


输入 #1
3 7
6 7
4 7 3 6
2 1 3 5


输出 #1
2


代码

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
char x;
bool f[10005]={false}; //用于判断这个站点有没有走过
int n,m,a[1005],bus[10005][10005],st[10005],fa[10005];
void bfs(){
int head=0,tail=1;
st[1]=-1;fa[1]=1;f[1]=true; //st用于储存第i个站点转了多少次站
do{
head++;
for(int i=1;i<=n;i++){
if(bus[fa[head]][i] and !f[i]){
tail++;
f[i]=true; //标记已经走过
st[i]=st[fa[head]]+1;
fa[tail]=i;
}
}
if(f[n])break; //判断有没有走都目标点
}while(head<tail);
if(head==tail)printf("NO");
else printf("%d",st[n]);
}
int main(){
scanf("%d%d",&m,&n);
for(int i=0;i<=m;i++){
memset(a,0,sizeof(a));
a[0]=1;
do{ //快读
x=getchar();
if (isdigit(x)) a[a[0]]=a[a[0]]*10+x-48;
else ++a[0];
}while (x!='\n'&& x!=EOF); a[0]--;
for(int j=1;j<=a[0]-1;j++)
for(int k=j+1;k<=a[0];k++)
bus[a[j]][a[k]]=1; //先做预处理
}
if(n==1){
printf("0");
return 0;
}
bfs();
return 0;
}

isdigit() 介绍

[BFS]最优乘车的更多相关文章

  1. 1722 最优乘车 1997年NOI全国竞赛

    题目描述 Description H城是一个旅游胜地,每年都有成千上万的人前来观光.为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路.每条单程巴士线路从某个巴士 ...

  2. noi 1997 最优乘车

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

  3. HN0I2000最优乘车 (最短路变形)

    HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...

  4. AcWing 920. 最优乘车

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

  5. 题解【洛谷P5767】[NOI1997]最优乘车

    题面 一道很经典的最短路模型转换问题. 考虑如何建图. 我们可以发现,对于每一条公交线路,可以将这条线路上 可以到达的两个点 连一条权值为 \(1\) 的边. 获取一条公交线路上的每一个点可以使用读取 ...

  6. 【SSL1194】最优乘车

    题面: 正文: 把每个边用链式前向星存起来,边权为\(1\),就可以愉♂快♂地最短路了

  7. PAT Advanced 1076 Forwards on Weibo (30) [图的遍历,BFS,DFS]

    题目 Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and ...

  8. nyoj 1238(BFSor最短路)

    最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3   描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. ...

  9. nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

    题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...

随机推荐

  1. taro render html

    taro render html html = `<h1 style='color: red'>Wallace is way taller than other reporters.< ...

  2. js 位掩码

    原文 定义掩码 const mask0 = parseInt("00000001", 2); const mask1 = parseInt("00000010" ...

  3. Techme INC:红光和近红外光疗法有效加速肌肉恢复,美国橄榄球队已采用

    Techme INC创始人兼董事长MADELEINE VAUGHAN表示:在运动结束后,肌肉纤维因为细微损伤造成酸痛情形,即是延迟性肌肉酸痛-DOMS.这类酸痛发生时,需要适度的恢复,避免造成肌肉拉伤 ...

  4. 算法型稳定币USDN有什么价值和用途?

    USDN的标签是"数字美元",与大多数稳定资产一样,USDN是一种金融服务产品.基于NGK公链发行的算法型稳定币USDN,USDN是和美元1:1锚定的加密数字货币,1USDN等于1 ...

  5. 观点纠正,yarn和npm对比,今天yarn仍然比npm快吗

    yarn和npm的区别和对比,网上很多了,不多说了. 只纠正一个观点:yarn仍然比npm快吗?不. 2016年,yarn刚刚发布,速度确实比npm快,于是网络上出现了好多推荐yarn的文章. 于是很 ...

  6. redis缓存穿透穿透解决方案-布隆过滤器

    redis缓存穿透穿透解决方案-布隆过滤器 我们先来看一段代码 cache_key = "id:1" cache_value = GetValueFromRedis(cache_k ...

  7. js中this指向的问题与联系

    前言 JavaScript 中最大的一个安全问题,也是最令人困惑的一个问题,就是在某些情况下this的值是如何确定的.有js基础的同学面对这个问题基本可以想到:this的指向和函数调用的方式相关.这当 ...

  8. HDOJ-1711(KMP算法)

    Number Sequence HDOJ-1711 1.这里使用的算法是KMP算法,pi数组就是前缀数组. 2.代码中使用到了一个技巧就是用c数组看成是复合字符串,里面加一个特殊整数位-1000006 ...

  9. 模式识别Pattern Recognition

    双目摄像头,单目摄像头缺少深度 Train->test->train->test->predicive

  10. 普通的一天,说一个普通的XML

    什么是XML XML全称是Extensible Markup Language,译为"可扩展标记语言",常用来存储和传输信息. XML的结构 我们经常看到的XML文件是这个样子的: ...