傳送門
每個類別和它所有的試題連一條權值為1的邊。
增加乙個超級源點s,s和每個類別連一條權值為選當前類別數量的邊。
增加乙個超級匯點t,每個試題和t連一條權值為1的邊。
求最大流即可。
——**
1 #include 2 #include 3 #include 4 #include 5view code#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 }
luogu P2763 試題庫問題 最大流
問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。建乙個源點,向所有的試題連邊,容量為1,試題向其所屬的...
題解 P2763 試題庫問題
題目描述 問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。輸入輸出格式 輸入格式 第1行有2個正整數k...
洛谷 P2763 試題庫問題
問題描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。程式設計任務 對於給定的組卷要求,計算滿足要求的組卷方案。輸入格式 第1行有2個正整數k和n 2 k 20,k ...