[JSOI2015] 地铁线路
题目描述
JSOI 王国的地铁又涨价了!正在 JSOI 旅游的 JYY 非常不开心。这次票价改革后,乘客并不是按照乘坐的距离收费,而是按照换乘次数进行收费的!JYY 也要按此更新他的线路搜索软件了。JYY 心想,在支付同样票价的前提下,岂不
是坐的站数越多,自己就赚的越多嘛!于是 JYY 希望开发一个线路搜索软件,使得自己总能够“赚”的最多!
JSOI 地铁一共有 $N$ 条线路 $S$ 个车站。第 $i$ 条地铁线路包含 $L_i$ 个站。所有地铁线路都是一条从首发站到终点站的直线型线路(不存在例如北京地铁 2 号线或者 10 号线那样奇葩的环线)。同时,每一条地铁线路都是双向运行的。如果有不同的线路经过同一个地铁站,那么乘客就可以在那个地铁站进行换乘。根据 JSOI 地铁的最新收费方式,每当乘客进入一列正在运行的地铁列车,都需要支付 $1$ 的费用。因此,假设乘客一共换乘了 $x$ 次,那么就需要总共支付 $x+1$ 的乘车费用。由于地铁线路都是双向运行的,因此在任意一站都可以换乘该线地铁反方向运行的列车。不过,需要注意的是,即使是换乘同样线路的反方向列车,也是需要付费的(因为总是需要先下车,再重新上车的)。
JYY现在要从 $A$ 站坐地铁前往 $B$ 站。假设对于任意一条地铁线路,相邻两站间地铁的运行时间均为 $1$ 分钟,并且列车停站和换乘均不耗时间,JYY想知道
1. 他最少需要支付的票价是多少钱;
2. 在支付最少票价的前提下,他最多可以乘坐多少分钟的地铁。
输入输出格式
输入格式
第一行包含两个正整数 $N$ 和 $S$。
第二行包含 $S$ 个由空格隔开的字符串,表示 $S$ 个站点的站名。
接下来 $N$ 行,每行描述一条地铁线路。对于其中第 $i$ 行,首先包含一个正整数 $L_i$,接下来 $L_i$ 个字符串,表示这条地铁线路上的站点名称。一条线路允许多次停靠同一个站点。
第 $N+3$ 行,包含两个不同的字符串 $A$ 和 $B$,表示 JYY 目前在 $A$ 站,希望坐地铁前往 $B$ 站。
输出格式
第一行包含一个整数 $C$,表示 JYY 最少需要支付的乘车费用。
第二行包含一个整数 $T$,表示 JYY 在花费 $C$ 的前提下,可以乘坐地铁的最长时间。
如果不存在两个站点之间的路线,第一行输出`-1`,第二行输出 `0`。
输入输出样例
输入样例 #1
2 5
A B C D E
4 A B C D
3 C D E
A D
输出样例 #1
1
3
说明
对于 $100\%$ 的数据,$2\leq N\leq 4\times 10^5$,$S\leq 3\times 10^5$,$\sum L_i\leq 8\times 10^5$。
保证输入所有字符串的长度不超过 $40$,且仅包含字母、数字以及横线 `-`。