#P1555. 2023.06.14-暑期实习-第2题-铁路线路优化

2023.06.14-暑期实习-第2题-铁路线路优化

题目内容

有若干个地铁线路。所有地铁线路分为LL形线和OO形线

LL形线有两个端点,在端点处的站点只能往另外一端移动,在非端点处则有两个移动方向可选择。

OO形线也称OO线,没有端点,在任一站都有两个移动方向可选择。

所有地铁站线中有以下两种移动方式:

  1. 从一个线路中的一个站移动到当前线路的另一个站点
  2. 从一个线路中的一个站点跳跃到另一条绳子的另一个站点

所有n个站点都被编号,从1到n,选择其中一个作为起点,再选择另一个作为终点。

一次输入一条线路上所有结的编号:例如{1155},表示一条LL形线路,两端为1155。例如{1122334411},表示一条OO形线路。这两条线路在11这个站点允许从一条线路跳到另一条线路的站点上,即可以从LL形线路的11站点跳到OO形线路的22站点,也可以从OO形线路的11站点跳到LL形线路的55站点。

规定了一系列输出:

  1. 最短跳跃路线数目:满足最短路线长度要求的所有路线的数目
  2. 最短跳跃路线长度(不计算起点)
  3. 最优跳跃路线数目:满足最短跳跃路线长度要求的跨绳跳跃次数最少的路线的数目

解答要求

时间限制: C/C++1000msC/C++ 1000ms,其他语言: 2000ms2000ms 内存限制:C/C++256MBC/C++256MB其他语言:512MB512MB

输入

第一行:第一个正整数MM,表示地铁线路的条数M MMM的范围是[15001,500]。

第二行:列出MM条地铁线路的站点数N(1)N(2)...N(M)N(1),N(2),...,N(M),用空格分隔,注意,00形线的首尾各算一个站点,例[1,3,6,7,4,11,3,6,7,4,1],站点数NN记为66

第三行到第M+2M+2行:列出MM条地铁线路的站点信息,站京IDID用空格分隔,站点数的范围是[1,20001,2000],站点IDID3232位正整数。

M+3M+3行:列出起点和终点,用空格分隔,如果起点或终点不在MM条地铁线路上,或者,起点和终点是同一个站点时,则认为不存在最短路线。

输出

第一行:输出最短移动路线的数目。注意:如果不存在最短移动路线,则输出1-1

第二行:输出最短移动路线长度,注意:如果不存在最短移动路线,则输出1-1

第三行:输出最优移动路线的数目。注意:如果不存在最优移动路线,则输出00

样例

输入

1
3
1 3 1
1 3

输出

1
1
1

解释

  1. 最短线路有11条:{1,31, 3}
  2. 根据11的结果,最短线路线长度是11
  3. 最优路线有11条:{1,31, 3}

样例2

输入

4
5 5 3 2
1 2 3 4 5
1 10 9 7 6
5 7 8
11 5
1 11

输出

2
5
1

解释

  1. 最短路线有22条,分别是{12345111,2,3,4,5,11}和{110975111,10,9,7,5,11}
  2. 根据11的结果,最短路线长度是55
  3. 最优路线有11条:{12345111,2,3,4,5,11} (换乘一次)