資料結構複習 最小生成樹與KMP

2021-10-12 16:27:13 字數 1385 閱讀 6978

生成樹:乙個連通無向圖的生成子樹,同時要求是樹。也即在圖的邊集中選擇n - 1條,將所有頂點連通

我們定義無向連通圖的最小生成樹為邊權和最小的生成樹

注意:只有連通圖才有生成樹,而對於非連通圖,只存在生成森林

#include

using

namespace std;

const

int max =

1e6+1;

struct nodee[max]

;int cnt;

//記錄邊的數量

int fa[max]

;//並查集 記錄祖先

int flag;

//標誌

int sum;

//記錄邊權和

int n,m;

//點,邊

int num;

//記錄加入邊的數量

void

add(

int x,

int y,

int w)

void

ini(

)int

find

(int x)

void

kruskal()

}}bool

cmp(

struct node a,

struct node b)

intmain()

sort

(e,e+cnt,cmp)

;//按照邊權排序

kruskal()

;if(flag)

printf

("%d\n"

,sum)

;else

}return0;

}

#include

using

namespace std;

char str[

100010];

//測試串(模式串)

char s[

100010];

//主串(被測串)

int n[

100010]=

;//next陣列

void

calnext()

for(

int i =

0;str[i]

!='\0'

;i++

) cout<<<

' ';

cout<}int

kmp(

)return-1

;}intmain()

else

cout<<

"無法匹配"

;return0;

}/*abbbbabab

bbbba

*/

資料結構 最小生成樹

生成樹 乙個連通圖的最小連通子圖稱作該圖的生成樹。有n個結點的連通圖的生成樹有n個結點和n 1條邊。乙個有n個結點的連通圖的生成樹是原圖的極小連通子圖,它包含原圖中的所有n個結點,並且有保持圖連通的最少的邊。由生成樹的定義可知 若在生成樹中刪除一條邊,就會使該生成樹因變成非連通圖而不再滿足生成樹的定...

資料結構(最小生成樹)

對於乙個無相連通網,他的所有生成樹中必有一棵邊的權值總和最小的生成樹,稱之為最小代價生成樹,簡稱最小生成樹。最小生成樹必須滿足三個條件 1 構造的最小生成樹必須包括n個頂點 2 構造的最小生成樹有且僅有n 1條邊 3 構造的最小生成樹中不存在迴路。普利姆演算法 prim 假設g v,e 為一無向連通...

資料結構 最小生成樹

對於乙個圖連通圖g,n個點,e條邊,最小生成樹就是n 1條邊圖的生成子圖,且這n 1條邊的權值和最小。對於乙個圖的兩種演算法 prim演算法和kruskal演算法,這兩種演算法都是基於貪心思想的。偽 實現 輔助變數 lowcost陣列,儲存當前可連通的其他節點的最小權值。cnt 0表示當前樹連線節點...