首先這個全域性-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,就做如...