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