[最短路]1722 最优乘车

题目描述 Description

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

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

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

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

3 7

6 7

4 7 3 6

2 1 3 5

样例输出 Sample Output

2

对于这类路线问题,由于一条路不必转战,故需要将路线上所有点都连一条边.

 1 #include <cstdio>
 2 int main()
 3 {
 4
 5     /*
 6           引用:主要的还是对数据的处理,一个巴士线路上的站都只要乘一次就到了,那么
 7         我们建立图,如果i站点和j站点同时出现在一个巴士线路上就连一条边,他们
 8         之间的权值为1.然后用最短路处理,dijkstra和floyed都能处理
 9     */
10     char chr;
11     bool E[501][501]={0},p[501]={0};
12     int V[501],N,i,j,l,m,t[500]={0};
13     scanf("%*d%d",&N);//选择不读入m
14     while (scanf("%c",&chr)!=EOF)
15     {
16         if (chr==‘\n‘||chr==‘\r‘) l=1;
17         if (scanf("%d",&m)==EOF) break;//文件结束
18         for (i=1;i<l;i++) E[t[i]][m]=1;//把每个站都连一条边
19         t[l++]=m;
20     }
21     for (i=2;i<=N;i++) V[i]=1<<26;V[1]=0;
22     for (i=0;i<N;i++)
23     {
24         for (m=1;p[m];m++);//找到第一个不确定根
25         for (j=m+1;j<=N;j++) if (p[j]==0&&V[m]>V[j]) m=j;//找极小根
26         p[m]=1;//标记
27         for (j=1;j<=N;j++)//以改点中转
28             if (p[j]==0&&E[m][j]&&V[m]+1<V[j]) V[j]=V[m]+1;
29     }
30     if (V[N]==1<<26) printf("NO"); else printf("%d",V[N]==0?0:V[N]-1);
31 }
时间: 2024-10-05 05:58:44

[最短路]1722 最优乘车的相关文章

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

1722 最优乘车 1997年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Description H城是一个旅游胜地,每年都有成千上万的人前来观光.为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路.每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站. 一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路巴士可以直接到达S公园,则他可能要先乘

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

HN0I2000最优乘车 (最短路变形) [试题]为了简化城市公共汽车收费系统,某城市决定对大部分的公共汽车都采用一票制,但由于某些公共汽车所经过的停车站太多和路途太长,就采用两票或多票制.经过这种票制改革后,人们坐公共汽车从一个站到另一个站时,就不得不选择一个好的乘车方案,以使他们的乘车费用最低. 为了方便于求出最佳的乘车方案,我们假设: l  采用一票制的公共汽车,无论从哪个站上车到那个站下车,乘该公共汽车的费用为1(费用单位). l  采用多票制的公共汽车,将设立某些站为关键站:那么,如果

最优乘车

最优乘车 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 18   Accepted Submission(s) : 6 Problem Description H城是一个旅游胜地,每年都有成千上万的人前来观光.为方便游客,巴士公司在各个旅游景点及宾馆.饭店等地都设置了巴士站并开通了一些单程巴士线路.每条单程巴士线路从某个巴士站出发,依次途

【NOI97】最优乘车

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

noi 1997 最优乘车

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

267. [NOI1997] 最优乘车

★★   输入文件:bustravel.in   输出文件:bustravel.out   简单对比 时间限制:1 s   内存限制:128 MB H城是一个旅游胜地,每年都有成千上万的人前来观光.为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路.每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站. 一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路巴士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来

1377:最优乘车

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

【SSL1194】最优乘车

题面: 正文: 把每个边用链式前向星存起来,边权为\(1\),就可以愉♂快♂地最短路了 原文地址:https://www.cnblogs.com/GJY-JURUO/p/11997597.html

NOI 1997 最佳乘车(travel)

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