牛客網A 生成樹

2021-08-31 01:40:04 字數 1182 閱讀 3218

你有一張n個點的完全圖(即任意兩點之間都有無向邊)

現在給出這張圖的兩棵生成樹

定義一次操作為:在任意一棵生成樹中刪除一條邊後再加入一條邊(必須在同一棵樹中操作),同時需要保證操作完後仍然是一棵樹

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

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

乙個整數n表示無向圖的點數

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

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

乙個整數,表示最少操作次數
示例1

6

6 11 2

2 33 5

5 41 2

2 44 5

5 36 4

2
題目中的樹如下所示

一種方案如下:

第二棵樹中刪除(2, 4),增加(2,3)

第二棵樹中刪除(4, 6),增加(1, 6)

注意:如果僅在第二棵樹中刪除(2, 4),增加(1, 6),得到的樹雖然形態相同,但是邊集不同,我們不認為它們是相同的!

示例2

3

1 22 3

1 33 2

1
示例3

2

1 22 1

0
保證輸入資料合法

#include#include#include#include#include#include#includeusing namespace std;

int main()

int ans = 0;

for(int i = 0; i < n - 1; i++)

cout<

return 0;

}

牛客網 剩下的樹

題目描述 有乙個長度為整數l 1 l 10000 的馬路,可以想象成數軸上長度為l的乙個線段,起點是座標原點,在每個整數座標點有一棵樹,即在0,1,2,l共l 1個位置上有l 1棵樹。現在要移走一些樹,移走的樹的區間用一對數字表示,如 100 200表示移走從100到200之間 包括端點 所有的樹。...

牛客網刷題之樹

題目描述 給定乙個僅包含數字0 9的二叉樹,每一條從根節點到葉子節點的路徑都可以用乙個數字表示。例如根節點到葉子節點的一條路徑是1 2 3,那麼這條路徑就用123來代替。找出根節點到葉子節點的所有路徑表示的數字之和 例如 1 2 3根節點到葉子節點的路徑1 2用數字12代替 根節點到葉子節點的路徑1...

黑白樹(牛客網 樹形dp)

題目描述 一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i...