#240. 公交线路

公交线路

公交线路

一条直线上有 nn 个公交站,依次编号为 1,2,,n1,2,\ldots,n。另有 mm 条公交线路,每条线路经过若干个不同的站点。

你可以进行以下操作:

  • 从一个站点步行到相邻站点,花费为 11
  • 在一个站点登上任意一条经过该站的公交线路,花费为 11
  • 已经在某条公交线路上时,可以到达该线路经过的任意站点并下车,额外花费为 00

你可以任意安排步行、上车和下车的顺序。请计算从站点 SS 到站点 TT 的最小总花费。

输入格式

第一行包含四个整数 n,m,S,Tn,m,S,T,分别表示站点数、公交线路数、起点和终点。

接下来 mm 行描述公交线路。每行先给出一个整数 cntcnt,随后给出该线路经过的 cntcnt 个站点编号。同一条线路中的站点编号互不重复。

线路中站点的给出顺序不表示公交车的行驶顺序;在同一条线路上,任意两个被列出的站点之间都可以互相到达。

输出格式

输出一个整数,表示从站点 SS 到站点 TT 的最小总花费。

样例输入

10 3 1 10
2 1 4
2 4 7
2 7 10

样例输出

3

样例说明

依次乘坐三条线路可以从 11 到达 44、从 44 到达 77、再从 77 到达 1010。每次上车花费 11,总花费为 33

数据范围

  • 1n,m1051\le n,m\le 10^5
  • 1S,Tn1\le S,T\le n
  • 每条线路均满足 1cntn1\le cnt\le n
  • 所有线路的 cntcnt 之和不超过 2×1052\times 10^5
  • 同一条线路内的站点编号互不重复。