題目描述
學習完最小生成樹後,老師只給出幾道模板題,為了盡快提公升自己的程式設計能力,小c同學給自己出了這樣一道題:最平衡生成樹。
最平衡生成樹是這樣定義的,乙個有 n 個結點的連通圖的生成樹包含原圖中的所有n個結點,並且最長邊與最短邊的差值最小。
現在給你乙個有n個結點的圖,求最平衡生成樹中最長邊與最短邊的差值。
輸入
輸入第一行為n和m兩個正整數,分別表示圖的結點數和邊數。
以下m行每行包含三個數a,b,w,分別表示每條邊的兩個端點和邊的權值。
輸出
輸出滿足題目要求的最小值,如果找不到最平衡生成樹,則輸出-1。
樣例輸入
4 51 2 3
1 3 5
1 4 6
2 4 6
3 4 7
樣例輸出
1
【資料範圍】
對於100%的資料,2<=n<=100,0<=m<=n(n-1)/2,w<=10000。
首先看到這道題時我想不就是一道裸的最小生成樹嗎,然後調了一上午......首先這是道最小生成樹沒錯。
不是裸的
不是裸的
不是裸的
然後難點是會構成多個生成樹,so每一次都要將你個並查集(找父親節點)陣列重置,然後就找最小的就好了(就是裸的了)**:
1 #include2using
namespace
std;
3const
int n=110;4
struct
stra[(n*(n-1))/2];7
int biao_ji=-1;8
int f[(n*(n-1))/2];9
intn,m;
10bool
cmp(str h1,str h2)
13int find(int
k)19}20
intmain()
27 sort(a+1,a+m+1
,cmp);
28int k=0;29
for(int i=1;i<=m;i++)42}
43}44 cout沒了 45 }
沒了.......我的一上午啊,啊啊啊啊啊啊
最平衡生成樹
題目描述 學習完最小生成樹後,老師只給出幾道模板題,為了盡快提公升自己的程式設計能力,小c同學給自己出了這樣一道題 最平衡生成樹。最平衡生成樹是這樣定義的,乙個有 n 個結點的連通圖的生成樹包含原圖中的所有n個結點,並且最長邊與最短邊的差值最小。現在給你乙個有n個結點的圖,求最平衡生成樹中最長邊與最...
最簡單的平衡樹(紅 黑樹)的實現
在二叉搜尋樹 bst 的基礎上,要實現一顆平衡樹,可以使用2 3樹的方式,2 3樹的直接實現,相對比較複雜 因此演算法的研究者們提出了紅 黑樹的實現方式。package com.test public class redblacktree,value private boolean isred no...
史上最詳盡的平衡樹 splay 講解與模板
首先宣告 萬分感謝gty大哥的幫助!這年頭能找到簡單易懂的陣列版平衡樹模板只能靠學長了!變數宣告 f i 表示i的父結點,ch i 0 表示i的左兒子,ch i 1 表示i的右兒子,key i 表示i的關鍵字 即結點i代表的那個數字 cnt i 表示i結點的關鍵字出現的次數 相當於權值 size i...