题目描述
彼得是一位生物學家。有次他在兩筆資料中分析同一群現存物種集合 Σ={1,2,…,n} 間的演化關係,卻得到了不太一樣的演化樹,想知道這兩棵演化樹的類似程度。
一棵演化樹 T 是一棵無向無根樹 (undirected, unrooted tree),其中葉節點為現存物種 1,2,…,n,其他節點則為已滅絕物種。設 v∈V(T),我們用 deg(v) 來表示與節點 v 相鄰的節點個數。在一棵演化樹中,每個代表已滅絕物種的節點 v 均有 deg(v)≥3。對於一個現存物種的子集合 X⊆Σ,我們用 T{X} 來代表 X 中的現存物種在 T 上的演化關係所形成的「演化子樹」,建構方式如下:
- 對所有 X 中的任兩點,標記其在 T 上的簡單路徑,並將所有不在 X 且未被標記的點刪除以得到 T′。
- 從 T′ 中不斷刪除滿足 deg(v)=2 的非葉節點 v 以得到 T{X}:將與 v 連結的兩條邊合併成一條,並移除 v。
以下圖的演化樹 T 為例。T 裡的現存物種集合為 Σ={1,2,3,4,5},若取 X={3,4,5},則經步驟 1 後會得到 T′,再經過步驟 2 後會得到 T{X}。注意當 X=∅ 時,根據定義我們有 T{X}=∅。

從一棵演化樹 T 中移除大小為 k≥0 的任意邊集合 K,可以得到 k+1 棵子樹 T(1),T(2),…,T(k+1),其中每棵子樹 T(i) 上的物種在 T 中的演化關係都會構成一棵演化子樹,我們稱它們為從 T 中移除 K 所導出的演化森林。注意我們有
- T 自身為移除 ∅ 後導出的演化森林。
- 若一棵子樹 T(i) 上沒有任何現存物種,對應的演化子樹為空。
以上圖中的 T 為例,移除 K={(1,7),(7,8),(2,8),(5,8)} 四條邊可以得到五棵子樹 T(1),T(2),…,T(5),接著導出演化森林:

比較兩座現存物種相同的演化森林時,我們只關注現存物種間的關係,因此已滅絕物種(即非葉節點)的編號並不重要。設 F1 與 F2 為兩座現存物種相同的演化森林,若移除它們的非葉節點編號後變得完全相同,我們就稱 F1 與 F2 類似。更精確地說,我們稱 F1 與 F2 類似,若且唯若存在某個一對一函數 Φ:V(F1)→V(F2),滿足
- 對任意 u∈Σ={1,2,…,n},我們有 Φ(u)=u。
- 對任意 u,v∈V(F1),我們有
$$(u, v) \in E(F_1) \iff (\Phi(u), \Phi(v)) \in E(F_2).
$$
以下圖為例,如果將 T1,T2,T3 的非葉節點編號都移除,會發現 T1 與 T2 不類似,而 T2 與 T3 類似。

設 T1 與 T2 為現存物種相同的兩棵演化樹。若存在從 T1 與 T2 中各刪除 k 條邊的方法,使得兩者導出的演化森林類似,則稱 T1 與 T2 的差異不大於 k,而滿足此條件的最小整數 k∗ 稱為 T1 與 T2 的差異數。如上圖中 T2 與 T3 的差異數為 0,而 T1 與 T2 的差異數為 1。

從 T1 與 T2 各刪除 1 條邊 | 導出了類似的演化森林
設從 T1 與 T2 中刪除的邊集合分別為 K1 與 K2,兩種刪除方法被視為不同若且唯若 K1 不同或 K2 不同。現給定兩棵物種集合均為 Σ 的演化樹 T1,T2 以及一個整數上限 k,彼得想知道它們的差異數 k∗ 是否不大於 k;如果 1≤k∗≤k,彼得也想知道有多少種從 T1 和 T2 中各刪除 k∗ 條邊的方法,可以使它們導出類似的演化森林。
输入格式
n m1 m2 k
u1 v1
u2 v2
⋮
un+m1−1 vn+m1−1
u1′ v1′
u2′ v2′
⋮
un+m2−1′ vn+m2−1′
- n 代表現存物種集合 Σ={1,2,…,n} 的大小。
- m1 代表在 T1 中已滅絕物種(以 n+1,n+2,…,n+m1 表示)的數量。
- m2 代表在 T2 中已滅絕物種(以 n+1,n+2,…,n+m2 表示)的數量。
- k 代表彼得設定的上限。
- ui,vi 代表 T1 有一條邊從 ui 連接到 vi。
- ui′,vi′ 代表 T2 有一條邊從 ui′ 連接到 vi′。
输出格式
如果 k∗=0,請輸出
0
如果 1≤k∗≤k,請輸出
k∗
S
其中 S 為一整數,代表從 T1 與 T2 中各刪除 k∗ 條邊後導出的演化森林類似的刪除方法數。如果 k∗>k,請輸出
−1
5 3 3 2
1 7
2 8
3 6
4 6
5 8
6 7
7 8
1 6
2 8
3 6
4 7
5 8
6 7
7 8
1
4
4 2 2 0
1 5
2 5
3 6
4 6
5 6
1 6
2 6
3 5
4 5
5 6
0
6 3 3 2
1 7
2 7
3 7
4 8
5 9
6 9
7 8
8 9
1 7
2 7
3 9
4 9
5 8
6 8
7 8
8 9
2
9
6 1 4 2
1 7
2 7
3 7
4 7
5 7
6 7
1 7
2 7
3 8
4 8
5 9
6 9
7 10
8 10
9 10
-1
提示
測資限制
- n≥2。
- 0≤m1≤300−n。
- 0≤m2≤300−n。
- k∈{0,1,2}。
- 1≤ui≤n+m1。
- 1≤vi≤n+m1。
- 1≤ui′≤n+m2。
- 1≤vi′≤n+m2。
- 給定的 T1 與 T2 保證連通,且
- 若 u∈{1,2,…,n},則在 T1 與 T2 中 deg(u)=1。
- 若 u∈{n+1,n+2,…,n+m1},則在 T1 中 deg(u)≥3。
- 若 u∈{n+1,n+2,…,n+m2},則在 T2 中 deg(u)≥3。
- 輸入的數皆為整數。
評分說明
本題共有四組子任務,條件限制如下所示。
每一組可有一或多筆測試資料,該組所有測試資料皆需答對才會獲得該組分數。
子任務 |
分數 |
額外輸入限制 |
1 |
21 |
k=0 |
2 |
13 |
k∈{0,1} |
3 |
23 |
n+m1≤30 且 n+m2≤30 |
4 |
43 |
無額外限制 |