luoguP2763 試題庫問題(最大流)

2022-03-01 10:07:34 字數 1280 閱讀 5607

傳送門

每個類別和它所有的試題連一條權值為1的邊。

增加乙個超級源點s,s和每個類別連一條權值為選當前類別數量的邊。

增加乙個超級匯點t,每個試題和t連一條權值為1的邊。

求最大流即可。

——**

1 #include 2 #include 3 #include 4 #include 5

#define min(x, y) ((x) < (y) ? (x) : (y))

6#define n 1100

7#define m 300000189

intk, n, m, cnt, s, t, sum;

10int

num[n], a[n][n];

11int

head[n], to[m], next[m], val[m], dis[n], cur[n];

1213 inline int

read()

1421

22 inline void add(int x, int y, int

z)23

2930 inline bool

bfs()

3149}50

}51return0;

52}5354 inline int dfs(int u, int

maxflow)

5570}71

return

ret;72}

7374

intmain()

7586 memset(head, -1, sizeof

(head));

87for(i = 1; i <= n; i++) add(i, t, 1), add(t, i, 0

);88

for(i = 1; i <= k; i++) add(s, i + n, num[i]), add(i + n, s, 0

);89

for(i = 1; i <= k; i++)

90for(j = 1; j <= a[i][0]; j++)

91 add(i + n, a[i][j], 1), add(a[i][j], i + n, 0

);92

while

(bfs())

9397

if(sum ^m)

98102

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

103110

return0;

111 }

view code

luogu P2763 試題庫問題 最大流

問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。建乙個源點,向所有的試題連邊,容量為1,試題向其所屬的...

題解 P2763 試題庫問題

題目描述 問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。輸入輸出格式 輸入格式 第1行有2個正整數k...

洛谷 P2763 試題庫問題

問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。輸入格式 第1行有2個正整數k和n 2 k 20,k ...