牛客 11 01 生成樹

2021-08-30 15:54:26 字數 1231 閱讀 5794

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

const int inf=0x3f3f3f3f;

const int maxn=1000000;

mapmp;

int main()

for(int i=0;i>a>>b;

if(mp[a]!=b&&mp[b]!=a)//兩點無邊

ans++;

}cout<

return 0;

}

牛客網A 生成樹

你有一張n個點的完全圖 即任意兩點之間都有無向邊 現在給出這張圖的兩棵生成樹 定義一次操作為 在任意一棵生成樹中刪除一條邊後再加入一條邊 必須在同一棵樹中操作 同時需要保證操作完後仍然是一棵樹 問使得兩棵樹相同的最少操作次數,若不存在合法的操作方案,輸出 1 注意 這裡的相同指的是點集與邊集均相同,...

uva 10766 生成樹計數

給出n,m,k,代表一家公司有n個部門,編號1到n,有m組關係,表示i和j不能直接聯通,k代表主管部門,問你有多少種分層方案。這道題的k沒有什麼用。include include include include include include include include include incl...

s4 7 生成樹協議

spanning tree 為了可靠,採用冗餘結構 但是透明網橋 會產生無休止迴圈的問題 冗餘交換拓撲可能帶來的問題 廣播風暴 多幀傳送 mac位址庫不穩定 生成樹協議 stp spanning tree protocol 為了維護乙個無環路的網路拓撲 新標準 rstp radia perlman ...