最大匹配 人員分配 鄰接矩陣

2022-09-18 00:45:12 字數 1132 閱讀 9639

description

設有m個工人x1, x2, …, xm,和n項工作y1, y2, …, yn,規定每個工人至多做一項工作,而每項工作至多分配一名工人去做。由於種種原因,每個工人只能勝任其中的一項或幾項工作。問應怎樣分配才能使盡可能多的工人分配到他勝任的工作。這個問題稱為人員分配問題。

input

第一行兩個整數m,n分別為工人數和工作數。

接下來乙個整數s,為二分圖的邊數。

接下來s行,每行兩個數ai,bi表示第ai個工人能勝任第bi份工作

output

乙個整數,表示最多能讓多少個工人派到自己的勝任的工作上。

sample input

3 34

1 22 1

3 31 3

sample output

3hint

規模:1<=m,n<=100

1<=s<=10000..

...分析

人員分配問題可以用圖的語言來表述。令x=,y=,構造二分圖g=(x, y, e)如下:

對於1≤i≤m,1≤j≤n,當且僅當工人xi勝任工作yi時,g中有一條邊xiyi,

於是人員分配問題就成為在g中求乙個最大匹配的問題。

為了簡單起見,假設工人數等於工作數,即n=m,且n≤100,這裡,n也可以看作是二分圖的|x|和|y|。..

...程式:

#include#include#includeusing namespace std;

bool f[201][201],bz[300];

int a[300];

int n,m,s;

bool find(int x)

return false;

}int main()

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

int ans=0;

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

if (a[i]!=0) ans++;

printf("%d",ans);

}

鄰接矩陣學習

鄰接矩陣 是表示頂點之間相鄰關係的矩陣。因此,用乙個一維陣列存放圖中所有頂點資料 用乙個二維陣列存放頂點間的關係 邊或弧 的資料,這個二維陣列稱為鄰接矩陣。鄰接矩陣又分為有向圖鄰接矩陣和無向圖鄰接矩陣。設g v,e 是乙個圖,其中v g的鄰接矩陣是乙個具有下列性質的n階方陣 對無向圖而言,鄰接矩陣一...

鄰接矩陣學習

鄰接矩陣 是表示頂點之間相鄰關係的矩陣。因此,用乙個一維陣列存放圖中所有頂點資料 用乙個二維陣列存放頂點間的關係 邊或弧 的資料,這個二維陣列稱為鄰接矩陣。鄰接矩陣又分為有向圖鄰接矩陣和無向圖鄰接矩陣。設g v,e 是乙個圖,其中v g的鄰接矩陣是乙個具有下列性質的n階方陣 對無向圖而言,鄰接矩陣一...

鄰接矩陣(Adjacency Matrix)

鄰接矩陣的特點 1 對於有n個頂點的無向圖最多需要n n 1 2個儲存空間,有向圖最多需要n 2個儲存空間 2 對於無向圖,鄰接矩陣第i行元素之和是圖第i個頂點的度 3 鄰接矩陣適用於稠密圖 4 方便搜尋兩頂點是否有邊或弧 鄰接矩陣的屬性 public static final int inf 32...