網路流24題裡面的,這題應該不算難,建圖比較簡單,就是把源點和型別連一條流量為需求題的邊,把型別和對應的題連一條流量為1的邊,把題和匯點連一條流量為1
的邊,保證每道題只用一次。然後找型別和題之間滿流的邊,表示這題在裡面。
#include
#include
#include
#include
using
namespace
std;
int n,k,s,m;
int a,b,c;
const
int n = 5000;
int h[n<<1],ecnt=1,head[n<<1];
struct edge e[1000*1000+3000];
void add(int bg,int ed,int val)
bool bfs() }}
return h[4999]!=-1;
}int dfs(int x,int f)
}if(used==0)h[x]=-1;
return used;
}int maxflow;
void dinic()
}int main()
for(int i=1; i<=n; i++)
add(i+m,4999,1);
add(4999,i+m,0);
}dinic();
if(maxflow==m)
for(int l=1; l<=k; l++)
}cout
cout
<<"no solution!";return
0;}
over 試題庫問題
假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取 m 道題組成試卷。並要求試卷包含 指定型別的試題。試設計乙個滿足要求的組卷演算法。對於給定的組卷要求,計算滿足要求的組卷方案。由檔案input.txt提供輸入資料。檔案第1行有2個正整數n和k 2 k...
試題庫問題
題目描述 假設乙個試題庫中有n道試題。每道試題都標明了所屬類別。同一道題可能有多個類別屬性。現要從題庫中抽取m 道題組成試卷。並要求試卷包含指定型別的試題。試設計乙個滿足要求的組卷演算法。對於給定的組卷要求,計算滿足要求的組卷方案。輸入格式 第1行有2個正整數k和n 2 k 20,k n 1000 ...
試題庫問題
匈牙利演算法 這是題目 因為是網路流24題網路流十分擅長這種求關係的題目,所以我們優先考慮寫網路流。對於網路流一類的問題,我們優先開啟畫圖軟體思考如何建模。首先我們先把這些題目與型別之間建一條邊 接著再把這些無向邊變成有向邊,然後再加上源節點s與匯節點t,再把源節點與型別相連,把題目與匯節點相連 這...