SHOI2010 最小生成樹(貪心)(最小割)

2021-09-27 03:45:01 字數 993 閱讀 4260

首先這個全域性-1可以等價成單點+1。

考慮建樹的kruskal演算法。

發現其實就是要求在加入權值小於等於這條邊的那些邊的時候,s,t

s,ts,

t不連通。

顯然最小割。

**:

#include

#define ll long long

#define re register

#define cs const

cs int n=

507,m=

807;

int n,m,s,t;

struct edge

;typedef std::vector

::iterator iter;

std::vector g[n]

;iter cur[n]

;inline

void

adde

(int u,

int v,

int uv,

int vu=0)

);g[v]

.push_back

((edge));

}int lev[n]

,gap[n]

,finish;

inline

void

bfs()}

finish=lev[s]==0

;}intdfs

(int u,

int flow)}if

(!--gap[lev[u]++]

)finish=

true

;++gap[lev[u]

],cur[u]

=g[u]

.begin()

;return ans;

}inline

intflow()

int st[m]

,ed[m]

,w[m]

;signed

main()

SHOI2010 最小生成樹

嘟嘟嘟 這道題的切入點在於模型的轉化。令第 lab 條邊連線的兩個點分別為 x,y 根據kruskal演算法,我們排完序加邊的時候,在執行第 lab 條邊之前,都要保證 x,y 不連通。這就很像最小割了。所以我們把邊權小於 w 的都拿來建圖,那邊權是啥咧?題中說的除了一條邊其餘的都減1,那不就相當於...

題解 SHOI2010 最小生成樹

題目大意 在乙個合法的連通圖中,每條邊都有乙個邊權,我們欽定一條邊。然後對圖進行一些操作 將某一條邊的權值 1或 1。請問至少多少次後可以使欽定的邊出現在該圖的最小生成樹中。luogu傳送門 shoi2010 最小生成樹 解題思路 說實話 我們一定要跳出題目的侷限性,畢竟網路流是屬於圖演算法。我們考...

貪心 最小生成樹Kruskal演算法

構造最小生成樹還有一種演算法,kurskal演算法 設g v,e 是無向連通帶權圖,v 設最小生成樹t v,te 該樹的初始狀態為只有n個頂點而無邊的非連通圖t v,kruskal演算法將這n個頂點看成是n個孤立的連通分支。它首先將所有的邊按權值從小到大排序,然後只要t中選中的邊數不到n 1,就做如...