BZOJ1305 網路流最大流

2021-09-19 02:40:22 字數 1113 閱讀 9359

bzoj1305 網路流最大流

分析:建立源點和匯點,將男孩分為喜歡點和不喜歡點,每個男孩喜歡點跟源點連線,權值為要求的答案,女孩跟匯點連線,權值為要求的答案;男孩的喜歡點和男孩的不喜歡點鏈結,權值為k,女孩的喜歡點和女孩的不喜歡點鏈結,權值為k;男孩跟喜歡的女孩連線,權值為1,同樣男孩不喜歡的女孩鏈結,權值為1.建完圖後二分查詢最大答案,用dinic跑最大流。

網路流最難的部分是建圖,圖建好了,問題就差不多解決了。

#include using namespace std;

const int n = 250;

int n, k, st, ed, cnt;

struct nodeedge[n * n];

int fir[n], deep[n];

char s[51][51];

inline void add(int u, int v, int w); fir[u] = cnt;

edge[++cnt] = (node); fir[v] = cnt;

}inline int bfs()}}

// for(int i = 0; i <= 4 * n + 1; i++)

// printf("\n");

return deep[ed];

}inline int dfs(int u, int fl)

}if(!f) deep[u] = -2;

return f;

}inline int dinic()

}return ans;

}//0 源點

//1~n 男孩的喜歡點

//n+1~2*n 男孩的不喜歡點

//2*n+1~3*n 女孩的喜歡點

//3*n+1~4*n 女孩的不喜歡點

//4*n+1 匯點

inline void built(int mid)

for(int i = 1; i <= n; i++)

}}int main()

int l = 1, r = n;

st = 0, ed = 4 * n + 1;

while(l <= r)

cout<

posted on 2019-02-19 10:05收藏

BZOJ 1305 二分 網路流

思路 建圖我根本沒有想到啊 我是不會告訴你我借鑑了一下題解的思路 把每個人拆成喜歡的和不喜歡的點 男 喜歡 向 男 不喜歡 連 邊權為k的邊 如果男喜歡女 那麼 男喜歡向 女喜歡 連 1 如果男 不喜歡女 那麼 男不喜歡 向 女不喜歡 連1 男 喜歡 向 男不喜歡 連k 女 不喜歡 向 女喜歡 連k...

bzoj 1834 網路流(最大流 費用流)

題意 n個點,m條無向邊,每條邊有乙個容量和擴容費用 容量擴大1的費用 2個詢問 1 不擴容下的1 n最大流 2 將最大流增加k的最小費用 強行湊出的網路流經典題麼 23333 對於第一問,裸跑最大流即可 第二問的建圖還是很不錯的,一開始認為,應該重新建邊,容量為k,費用是給題目給的。but,too...

網路流入門 bzoj1305

當初以為網路流是金牌題,從來都沒接觸過,後來才知道原來網路流只是乙個模板,真正難的是構圖問題,而且如果一眼看出是模板題的話只要能構出來圖問題就不大,大家的dinic模板都差不多。來一道簡單的構圖問題吧。description 一次舞會有n個男孩和n個女孩。每首曲子開始時,所有男孩和女孩恰好配成n對跳...