在克拉科夫的亞捷隆大學(Jagiellonian University)學習有利有弊。優點:亞捷隆大學。缺點:克拉科夫……或者更準確地說,必須不斷應對電車軌道的重建。
最初,公共交通網絡由若干條電車路線組成。接著其中一條路線被暫停,然後是另一條,再接著又一條……正如你所知,克拉科夫有一條不可動搖的規則,即在任何先前暫停的路線恢復運作之前,必須先暫停另一條路線。目前並非所有路線都已被暫停,而你正坐在電車上,對直達大學的路線剛剛消失感到惱火。你望向窗外,問自己:「我真的是這座城市裡最倒楣的乘客嗎?還是說,在某個地方,有人需要轉乘更多次才能到達他們想去的地方?」
更精確地說,我們稱若存在路線 $l_0, \dots, l_c$,使得 $l_0$ 停靠站點 $A$,$l_c$ 停靠站點 $B$,且對於每個 $0 \le i < c$,存在某個站點同時由 $l_i$ 和 $l_{i+1}$ 停靠,則稱站點 $B$ 可從站點 $A$ 經由 $c$ 次轉乘到達。在任何時間點,你都想知道 $c$ 的最大值,使得存在一對站點 $(A, B)$,其中 $B$ 可從 $A$ 經由 $c$ 次轉乘到達,且對於任何 $c' < c$,$B$ 皆無法從 $A$ 經由 $c'$ 次轉乘到達。
注意,有時在某些站點對之間可能根本無法通行。根據上述定義,你決定在分析中不考慮這類站點對——你認為如果有人希望在這些站點之間旅行,他們無論如何都會選擇搭乘 Uber。
輸入格式
第一行包含測試案例數量 $z$ ($1 \le z \le 35$)。接著是各個測試案例的描述。
每個測試案例的第一行包含站點數量 $n$ 和電車路線數量 $k$ ($2 \le n, k \le 750$)。站點編號為 $1$ 到 $n$,路線編號為 $1$ 到 $k$。
接著有 $k$ 行。第 $i$ 行描述編號為 $i$ 的電車路線。每行以一個整數 $r_i$ ($2 \le r_i \le n$) 開頭,後接 $r_i$ 個不同的整數 $a_{i,j}$ ($1 \le a_{i,j} \le n$),代表第 $i$ 條電車路線停靠的站點識別碼。任何電車路線皆雙向行駛。
下一行包含一個整數 $s$ ($1 \le s \le k - 1$)。
接著有 $s$ 行,描述電車路線被暫停的順序。每行包含一個整數 $s_i$ ($1 \le s_i \le k$),代表被暫停的電車路線識別碼。任何路線最多被暫停一次。
所有測試案例中 $n$ 和 $k$ 的總和皆不超過 $1000$。
輸出格式
對於每個測試案例,輸出 $s + 1$ 行,每行包含一個整數。第 $i+1$ 行應表示在第 $i$ 次暫停事件後(第一行表示在任何暫停之前的答案)所需的最多轉乘次數。
範例
輸入 1
1 5 4 3 1 3 5 2 1 4 2 2 3 2 2 4 3 1 4 3
輸出 1
1 2 0 0
說明
最初,需要一次轉乘才能旅行,例如從站點 4 到站點 5(反之亦然)。這種旅行可以透過搭乘路線 2,然後搭乘路線 1 來實現。沒有需要 2 次或更多轉乘的站點對。
在路線 1 被移除後,從站點 1 到站點 3(反之亦然)需要兩次轉乘。
當路線 1 和 4 被移除時,唯一仍可互相到達的站點對是 $(1, 4)$ 和 $(2, 3)$,在這兩種情況下,它們之間旅行皆不需要轉乘。
當路線 1、4 和 3 被移除時,唯一仍可互相到達的站點對是 $(1, 4)$。在這些站點之間旅行不需要轉乘。