你有一張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...