USACO 奶牛電信

2021-07-24 07:31:06 字數 1427 閱讀 4182

題目鏈結: 洛谷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奶牛回家

題目描述 現在是晚餐時間,而母牛們在外面分散的牧場中。農民約翰按響了電鈴,所以她們開始向穀倉走去。你的工作是要指出哪只母牛會最先到達穀倉 在給出的測試資料中,總會有且只有乙隻速度最快的母牛 在 的時候 晚餐前 每只母牛都在她自己的牧場上,一些牧場上可能沒有母牛。每個牧場由一條條道路和乙個或多個牧場連...