網路流24題 圓桌問題

2021-08-14 15:04:05 字數 1967 閱讀 1500

click me

從原點向每乙個單位連一條流量為單位人數的邊,單位和桌子間連一條流量為1的邊,桌子和匯點之間連一條流量為桌子容量的邊,跑最大流即可。

/**************************

* au: hany01

* date: jan 13th, 2018

* prob: luogu3254

* email: [email protected]

**************************/

#include

using

namespace

std;

typedef

long

long ll;

typedef pair pii;

typedef

vector

vi;

#define rep(i , j) for (int i = 0 , i##_end_ = j; i < i##_end_ ; ++ i)

#define for(i , j , k) for (int i = (j) , i##_end_ = (k) ; i <= i##_end_ ; ++ i)

#define fordown(i , j , k) for (int i = (j) , i##_end_ = (k) ; i >= i##_end_ ; -- i)

#define set(a , b) memset(a , b , sizeof(a))

#define sz(a) ((int)(a.size()))

#define all(a) a.begin(), a.end()

#define pb(a) push_back(a)

#define mp(a, b) make_pair(a, b)

#define inf (0x3f3f3f3f)

#define inf1 (2139062143)

#define mod (1000000007)

#define y1 wozenmezhemecaia

#ifdef hany01

#define debug(...) fprintf(stderr , __va_args__)

#else

#define debug(...)

#endif

inline

void file()

template

inline

bool chkmax(t &a, t b)

template

inline

bool chkmin(t &a, t b)

char c_; int _ , __;

inline

int read()

const

int maxn = 10500, maxm = 160 * 3800;

int n, m, s, t, sum, e, num[maxn], all, v[maxm], f[maxm], nex[maxm], beg[maxn], d[maxn], gap[maxn];

inline

void add_(int uu, int vv, int ff)

inline

void add(int uu, int vv, int ff)

inline

void init()

int sap(int u, int flow)

if (!-- gap[d[u] ++]) d[t] = sum;

++ gap[d[u]];

return flow - res;

}inline

bool solve()

inline

void print()

}int main()

//等閒識得東風面,萬紫千紅總是春。

// -- 朱熹《春日》

網路流24題 圓桌問題

二分圖多重匹配問題,可以用最大流解決。建立二分圖,每個單位為x集合中的頂點,每個餐桌為y集合中的頂點,增設附加源s和匯t。1 從s向每個xi頂點連線一條容量為該單位人數的有向邊。2 從每個yi頂點向t連線一條容量為該餐桌容量的有向邊。3 x集合中每個頂點向y集合中每個頂點連線一條容量為1的有向邊。求...

網路流24題 圓桌問題

假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為ri i 1,2,m 會議餐廳共有n 張餐桌,每張餐桌可容納ci i 1,2,n 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。對於給定的代表數和餐桌數...

網路流24題 圓桌問題

題目 洛谷p3254。題目大意 有n個單位和m張桌子,每個單位有一定的人數,每張桌子也有一定的容量。一張桌子上不能有兩個同一單位的人。現在問你能否坐下,若能則輸出一種方案。解題思路 最大流。從s向每個單位連一條容量為 單位人數 的邊,代表這個單位有那麼多人。從每張桌子向t連一條容量為 桌子容量 的邊...