1. 程式人生 > 實用技巧 >生成樹

生成樹


你有一張n個點的完全圖(即任意兩點之間都有無向邊)
現在給出這張圖的兩棵生成樹
定義一次操作為:在任意一棵生成樹中刪除一條邊後再加入一條邊(必須在同一棵樹中操作),同時需要保證操作完後仍然是一棵樹

問使得兩棵樹相同的最少操作次數,若不存在合法的操作方案,輸出-1

注意:這裡的相同指的是點集與邊集均相同,也就是對於第一棵樹中的邊(u, v),第二棵樹中一定存在邊(u, v)或(v, u),再不懂請看樣例解釋。

輸入描述:

一個整數n表示無向圖的點數
接下來n - 1行,每行兩個整數u, v表示第一棵生成樹中的邊
再接下來n - 1行,每行兩個整數u, v表示第二棵生成樹中的邊

輸出描述:

一個整數,表示最少操作次數


思路:
剛看到這個題的時候,花了一個圖,然後想到找不同的邊數

都是n - 1條邊,假設有x條不同的邊,說明這x條邊都要刪瞭然後加上x條邊

反過來,n - 1 - 相同的邊數也是本題答案