設有m個工人x1, x2, …, xm,和n項工作y1, y2, …, yn,規定每個工人至多做一項工作,而每項工作至多分配一名工人去做。由於種種原因,每個工人只能勝任其中的一項或幾項工作。問應怎樣分配才能使盡可能多的工人分配到他勝任的工作。這個問題稱為人員分配問題。
第一行兩個整數m,n分別為工人數和工作數。
接下來乙個整數s,為二分圖的邊數。
接下來s行,每行兩個數ai,bi表示第ai個工人能勝任第bi份工作
乙個整數,表示最多能讓多少個工人派到自己的勝任的工作上。
334
1221
3313
3
#include
#include
#include
using
namespace std;
int n, m, s, q, tot, ans;
int head[
10005
], link[
1005
], vis[
1005
], f[
10005][
10005];
bool find (
int i)
return0;
}int main (
)for
(int i=
1; i<=n; i++
) printf (
"%d"
, ans)
;return0;
}
二分 二分匹配
給了乙個矩陣 n行m列 選n個數 要保證這n個數不在同行同列,計算出第k大的數最小 二分答案,然後我們對於每個a i j mid的我們就i和j建立一條邊 然後二分求最大匹配必須大於等於n k 1 因為是第k大 而不是第k小 坑了好久才發現 include include include includ...
過山車(最大二分匹配)
題目鏈結 problem description rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和x...
二分匹配演算法
匈牙利演算法求二分匹配 下 include includeusing namespace std int v 頂點數 vectorg max v 圖的鄰接表表示 int match max v 所匹配的頂點 bool used max v dfs 中用到的訪問標記 向圖中增加一條連線 u 和 v 的...