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...