題解 P3366 模板 最小生成樹

2021-09-10 23:09:16 字數 2407 閱讀 7196

本質是並查集加貪心。

不清楚並查集可以戳這

用時: 268ms / 記憶體: 2988kb

#include

#define maxn 200005

using

namespace std;

struct nodeedge[maxn]

;bool

cmp(node a, node b)

int sum, n, m, ans;

int dad[maxn]

;void

init()

}int

find_dad

(int i)

inthebin

(int x,

int y)

return0;

}int

main()

sort

(edge +

1, edge +

1+ m, cmp)

;for

(int i =

1; i <= m ;

++ i)

if(sum == n -1)

break

;//選出n-1條邊退出

} cout

}

用時: 578ms / 記憶體: 5492kb至於找出最近的定點j可以用堆來優化,降低複雜度,使用堆優化的方法在下面。

#include

#define inf 0x3f3f3f3f

#define maxn 200005

#define maxm 5005

using

namespace std;

struct nodeedge[maxn <<1]

;//雙向邊開兩倍

int n, m, sum, ans, cnt;

int head[maxm]

, book[maxm]

, dis[maxm]

;void

add(

int u,

int v,

int w)

intmain()

for(

int i = head[1]

; i !=-1

; i = edge[i]

.next)

book[1]

=1; sum ++

;while

(sum < n)

} book[t]=1

; sum ++

; ans +

= dis[t]

;for

(int i = head[t]

; i !=-1

; i = edge[i]

.next)}}

cout

}

用時: 196ms / 記憶體: 5420kb

#include

#define inf 0x3f3f3f3f

#define maxn 200005

#define maxm 5005

using

namespace std;

struct nodeedge[maxn <<1]

;int n, m, sum, ans, cnt;

int head[maxm]

, book[maxm]

, dis[maxm]

;int h[maxm]

, pos[maxm]

, siz;

void

add(

int u,

int v,

int w)

void

init()

}void

siftdown

(int i)

if(t != i)

else flag =1;

//否則說明當前節點已經比他的子節點小,無需調整}}

void

siftup

(int i)

else flag =1;

//當前節點比父節點大了就無需調整

i /=2

;//更新i的編號}}

void

heap()

}int

pop(

)void

prime()

}}}int

main()

for(

int i = head[1]

; i !=-1

; i = edge[i]

.next)

init()

;heap()

;prime()

; cout

}

P3366 模板 最小生成樹

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...

P3366 模板 最小生成樹

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...

P3366 模板 最小生成樹

題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...