有源匯上下界最大流

最爱丁珰發表於2024-09-03

對於題目給的圖\(G\),我們新增一條邊\((t,s)\)轉化成\(G_1\),對\(G_1\)求無源匯上下界可行流,新增虛擬源匯點\(S,T\)得到的圖是\(G_2\),對\(G_2\)跑dinic,此時得到的最大流\(f\)滿足\(S\)的每條出邊都是滿的,\(T\)的每條入邊都是滿的,\(f\)誘匯出的\(G_2\)的殘存網路為\(G_3\),在\(G_3\)中將\(s,t\)分別當做源點和匯點跑dinic,此時跑出來的增廣路一定不包含\((t,s),S,T\)(因為增廣路是簡單路徑,所以不包含\((t,s)\);因為\(G_3\)\(S\)只有入邊所以一旦進入\(S\)就出不去了,所以不包含\(S\);因為\(G_3\)\(T\)只有出邊所以無法進入\(T\),所以不包含\(T\)),設這個dinic結束之後,得到一條最大流\(f_1\),此時\(s,t\)流量不守恆,將\(f\)\(f_1\)相加,並令\(G_2\)\((t,s)\)的權值為\(f_1\),此時不難驗證仍然得到了\(G_2\)的一個最大流,而\(G_2\)的一個最大流就可以轉換為\(G_1\)的一個可行流

相關文章