☆ 輸入檔案:mst2.in
輸出檔案:mst2.out
簡單對比
時間限制:1 s 記憶體限制:256 mb
求嚴格次小生成樹
第一行包含兩個整數n 和m,表示無向圖的點數與邊數。 接下來 m行,每行 3個數x y z 表示,點 x 和點y之間有一條邊,邊的權值為z。
包含一行,僅乙個數,表示嚴格次小生成樹的邊權和。(資料保證必定存在嚴格次小生成樹)
5 61 2 1
1 3 2
2 4 3
3 5 4
3 4 3
4 5 6
11資料中無向圖無自環; 50% 的資料n≤2 000 m≤3 000; 80% 的資料n≤50 000 m≤100 000; 100% 的資料n≤100 000 m≤300 000 ,邊權值非負且不超過 10^9 。
bzoj。。。
#include#include#include
#include
using
namespace
std;
struct
nondedge[
400000
];int t,n,m,x,y,z,fa[200000],num,ans[200000
];int tot,bns,k,answer=0x7f7f7f7f
;int
cmp(nond aa,nond bb)
int find(int
x)int
main()
sort(edge+1,edge+1+m,cmp);
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=m;i++)
if(tot==n-1) break
; }
for(int i=1;i<=tot;i++)
if(num==n-1) break
; }
if(num==n-1&&k!=bns) answer=min(k,answer);
}cout
<}
次小生成樹模板
kruskal演算法 關於次小生成樹,首先求出最小生成樹,然後列舉每條不在最小生成樹上的邊 在原本的節點上新增乙個vis屬性進行判斷即可 並把這條邊放到最小生成樹上面,然後就一定會形成環,那麼我們在這條環路中取出一條 除了新加入的那一條邊 最長的路 這裡可以用d u v 來維護 最終得到的權值就是次...
最小生成樹 次小生成樹 模板
次小生成樹我的理解 在最小生成樹的基礎上,列舉不再最小生陳樹上的邊,然後成環,取出一條除了新加入的那條邊外的最長邊,最終的權值即為次小生成樹的權值。小結論 當次小生成樹的權值與最小生成樹的權值相同時,最小生成樹不唯一。include include include includeusing name...
COGS 1578 次小生成樹初級練習題
輸入檔案 mst2.in輸出檔案 mst2.out簡單對比 時間限制 1 s 記憶體限制 256 mb 求嚴格次小生成樹 第一行包含兩個整數n 和m,表示無向圖的點數與邊數。接下來 m行,每行 3個數x y z 表示,點 x 和點y之間有一條邊,邊的權值為z。包含一行,僅乙個數,表示嚴格次小生成樹的...