P7010 [CERC2013] Subway
题目描述
$Johny$ 准备去拜访他的朋友 $Michelle$。他的父亲允许他乘地铁独自去那里。$Johny$ 喜欢乘地铁旅行,并很愿意用这次机会在地铁里呆上半天,但是父亲要求他尽量减少换乘次数。这个城市有很多地铁车站,并有几条地铁线路连接它们。所有列车都完全同步——在每条线上的两个连续地铁站点之间地铁行驶的时间恰好需要 $1$ 分钟,而在该城市的任何一个地铁站点上更改线路是不需要花费时间的。
现在 $Johny$ 有了该城市的地铁线路图,请帮助 $Johny$ 计划行程,以便他可以尽可能长时间的在地铁里呆着,同时还要尽量减少换乘次数。
输入格式
输入的第 $1$ 行为测试数据 $T$ 的数量。
每组测试数据均用空行分隔。接下来的两行以字符串以 $ Stops: $ 和 $Lines: $ 开头,并分别包含所有地铁站和线路的名称(以逗号和空格分隔)。每条地铁线路中的其中一条线路(不分先后)从 $route: $ 开始,并一一列出了该条线路的站点名称。最后两行给定了 $Johny$ 和 $Michelle$ 的家附近的车站的名称。
在每组测试数据中,最多有 $300000$ 个站点以及 $100000$ 条铁路线路,保证其总长度不超过 $1000000$;铁路线路和地铁站点的名称长度均在 $1$ 至 $50$ 个字符之间,其名称中可以含有字母、数字、连字符 `-`、引号 `'` 和特殊符号 `&`。所有的地铁线路都是双向的(改变行进方向即该条线路被改变),并保证没有自交叉。
输出格式
按照在输入中测试数据的顺序来输出每组测试数据的答案。对于每组测试用例,需输出一行来总结 Johny 可以采用的最佳路线(参见样例输出)。假设这样的线路始终存在。
### 输入输出样例
**输入 #1**
```txt
3
Stops: OxfordCircus, PiccadillyCircus, HydeParkCorner, King'sCross, GreenPark, Arsenal, Victoria, Highbury&Islington, LeicesterSquare
Lines: Blue, Cyan
Cyan route: Highbury&Islington, King'sCross, OxfordCircus, GreenPark, Victoria
Blue route: HydeParkCorner, GreenPark, PiccadillyCircus, LeicesterSquare, King'sCross, Arsenal
Johny lives at King'sCross
Michelle lives at GreenPark
Stops: OxfordCircus, PiccadillyCircus, HydeParkCorner, King'sCross, GreenPark, Arsenal, Victoria, Highbury&Islington, LeicesterSquare
Lines: Blue, Cyan
Cyan route: Highbury&Islington, King'sCross, OxfordCircus, GreenPark, Victoria
Blue route: HydeParkCorner, GreenPark, PiccadillyCircus, LeicesterSquare, King'sCross, Arsenal
Johny lives at PiccadillyCircus
Michelle lives at LeicesterSquare
Stops: OxfordCircus, PiccadillyCircus, HydeParkCorner, King'sCross, GreenPark, Arsenal, Victoria, Highbury&Islington, LeicesterSquare
Lines: Blue, Cyan
Cyan route: Highbury&Islington, King'sCross, OxfordCircus, GreenPark, Victoria
Blue route: HydeParkCorner, GreenPark, PiccadillyCircus, LeicesterSquare, King'sCross, Arsenal
Johny lives at Victoria
Michelle lives at HydeParkCorner
```
**输出 #1**
```txt
optimal travel from King'sCross to GreenPark: 1 line, 3 minutes
optimal travel from PiccadillyCircus to LeicesterSquare: 1 line, 1 minute
optimal travel from Victoria to HydeParkCorner: 2 lines, 7 minutes
```
说明/提示
时间限制:$8s$
内存限制:$256\texttt{MB}$