題目鏈結: 洛谷1345
題目大意
給出乙個
n 個點
m條邊的無向圖,與 s,
t , 問至少刪去多少個點,使 s,
t 不連通。( n≤
100,m≤
600 )
分析
1. 對於這種分離s,
t 的題,考慮最大流–最小割的方法。
2. 然而題目要求割點,而不是割邊,怎麼辦?這就是一種經典的拆點題。
3. 把每個點
i 拆成兩個點i,
i+n且連一條容量為1的有向邊(前者向後者連,下同); 若i,
j 之間有邊,則在i+
n,j 之間和 j+
n,i 之間連容量為 in
f 的有向邊。
4. 為什麼要這樣連邊?這樣可以保證最小割只割點,不割邊。而且只能i+
n,j 連不能 j,
i+n 連,後者會增大最大流。
5. 接下來就可以直接跑最大流–最小割了。
上**
// 主要思路已在分析中給出,**中不作多餘闡述
#include
#include
#include
#include
using
namespace
std ;
const
int n = 300 + 5 ;
const
int m = 3e3 + 5 ;
const
int inf = 0x3f3f3f3f ;
int n, m, s, t ;
int len, head[ n ] ;
struct node_lib
} lib[ m << 1 ] ;
// 建圖
inline
void init() else
for ( int i = 1 ; i <= m ; i ++ )
}queue
< int > q ;
int curn[ n ], step[ n ] ;
inline
bool bfs() }}
if ( step[ t ] ) return
true ;
else
return
false ;
}int dinic( int a , int b ) }}
return
0 ;}
inline
int figure()
return ans ;
}int main()
以上 USACO5 4 奶牛的電信
傳送門 usaco5.4 奶牛的電信 農夫約翰的奶牛們喜歡通過電郵保持聯絡,於是她們建立了乙個奶牛電腦網路,以便互相交流。這些機器用如下的方式傳送電郵 如果存在乙個由c臺電腦組成的序列a1,a2,a ca 1,a 2,a c a1 a2 ac 且a 1a 1 a1 與a 2a 2 a2 相連,a 2...
USACO5 4 奶牛的電信(最小割)
傳送門 最小割的點的數量 一般的最小邊求的是邊的權值和,這裡要求割掉的最少的點的數量。原本以為割掉的最少的邊的數量就是割掉的最少的點的數量。於是寫了個最小割跑,失敗了。後來看到沒有建雙向邊,於是建了但還是gg 錯誤之處在於這張圖 如果割點的話,我們只需要割掉紅色的點 如果割邊的話需要割掉兩條邊,這就...
USACO奶牛回家
題目描述 現在是晚餐時間,而母牛們在外面分散的牧場中。農民約翰按響了電鈴,所以她們開始向穀倉走去。你的工作是要指出哪只母牛會最先到達穀倉 在給出的測試資料中,總會有且只有乙隻速度最快的母牛 在 的時候 晚餐前 每只母牛都在她自己的牧場上,一些牧場上可能沒有母牛。每個牧場由一條條道路和乙個或多個牧場連...