最平衡生成樹

2022-05-08 19:45:07 字數 1243 閱讀 3527

題目描述

學習完最小生成樹後,老師只給出幾道模板題,為了盡快提公升自己的程式設計能力,小c同學給自己出了這樣一道題:最平衡生成樹。

最平衡生成樹是這樣定義的,乙個有 n 個結點的連通圖的生成樹包含原圖中的所有n個結點,並且最長邊與最短邊的差值最小。

現在給你乙個有n個結點的圖,求最平衡生成樹中最長邊與最短邊的差值。

輸入

輸入第一行為n和m兩個正整數,分別表示圖的結點數和邊數。

以下m行每行包含三個數a,b,w,分別表示每條邊的兩個端點和邊的權值。

輸出

輸出滿足題目要求的最小值,如果找不到最平衡生成樹,則輸出-1。

樣例輸入

4 5

1 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 #include2

using

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...