传送门

解题思路

比较简单的网络流,建图还是比较好想的。让源点向试题连流量为1的边,试题向所属类型连流量为1的边,类型向汇点连流量为需要此类试题的边。直接跑最大流,输出答案时找到那些满流的边所对的点。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector> using namespace std;
const int MAXN = ;
const int MAXM = ;
const int inf = 0x3f3f3f3f; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} int k,n,head[MAXN],cnt=,d[MAXN],sum,Sum;
int S=,T=,to[MAXM<<],nxt[MAXM<<],val[MAXM<<];
queue<int> Q;vector<int> ans[MAXN]; inline void add(int bg,int ed,int w){
to[++cnt]=ed,nxt[cnt]=head[bg],val[cnt]=w,head[bg]=cnt;
} bool bfs(){
while(Q.size()) Q.pop();memset(d,,sizeof(d));
d[S]=;Q.push(S);
while(!Q.empty()){
int x=Q.front();Q.pop();
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!d[u] && val[i]) {
d[u]=d[x]+;Q.push(u);
if(u==T) return true;
}
}
}
return false;
} int dinic(int x,int flow){
if(x==T) return flow;
int res=flow,k;
for(register int i=head[x];i && res;i=nxt[i]){
int u=to[i];
if(d[u]==d[x]+ && val[i]){
k=dinic(u,min(flow,val[i]));
if(!k) d[u]=;
val[i]-=k;val[i^]+=k;res-=k;
}
}
return flow-res;
} int main(){
k=rd(),n=rd();int x,y;
for(int i=;i<=k;i++)
x=rd(),add(i,T,x),add(T,i,),Sum+=x;
for(int i=;i<=n;i++){
x=rd();
for(int j=;j<=x;++j){
y=rd();add(i+k,y,);add(y,i+k,);
}
}
for(int i=;i<=n;i++) add(S,i+k,),add(i+k,S,);
while(bfs()) sum+=dinic(S,inf);
// cout<<sum<<endl;
for(int i=;i<=k;i++)
for(int j=head[i];j;j=nxt[j]){
if(to[j]==T) continue;
if(!val[j^]) ans[i].push_back(to[j]-k);
}
for(int i=;i<=k;i++){
printf("%d: ",i);
for(int j=;j<ans[i].size();j++) printf("%d ",ans[i][j]);
printf("\n");
}
return ;
}

最新文章

  1. [PHP源码阅读]strpos、strstr和stripos、stristr函数
  2. C#WebBrowrse拦截下载对话框
  3. MyEclipse导入jquery-1.8.0.min.js等文件报错的解决方案
  4. Struts2 自定义拦截器
  5. DockerFile 参数详解
  6. Windows驱动开发(中间层)
  7. go 函数
  8. 随机四则运算 C语言
  9. 第三篇、C_双向链表(循环链表)
  10. IL来理解属性
  11. [BZOJ]1050 旅行comf(HAOI2006)
  12. python3 练习题(购物车)
  13. UML和模式应用5:细化阶段(2)--细化阶段制品之领域模型
  14. 07机器学习实战k-means
  15. mysql下载、安装
  16. Azkaban(三)Azkaban的使用
  17. 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释
  18. Exception in thread &quot;main&quot; java.lang.IllegalArgumentException: System memory 202768384 must be at least 4.718592E8. Please use a larger heap size.
  19. Spring mvc 中 DispatcherServlet 的学习和理解
  20. 微信小程序小红点未读消息如何实现?

热门文章

  1. Html+css编写太阳星系
  2. wpf tabcontrol内的datagrid的selectionChanged事件向往传递问题
  3. 区别 |python-pandas库set_index、reset_index用法区别
  4. JavaWeb学习篇之----自定义标签&amp;&amp;JSTL标签库详解
  5. sqoop的导入|Hive|Hbase
  6. flutter 插件
  7. RouterOS视频教程下载
  8. class3_Entry &amp; Text 输入和文本框
  9. CodeForces 1166E The LCMs Must be Large
  10. 54Mbps、150Mbps、433Mbps 你知道这三个Wi-Fi速率怎么算的吗?