P2763 试题库问题

dinic

搞个虚拟源点和汇点,瞎建建边就好辣。

偷张图↓↓

如果没满流就是无解辣

输出方案咋办呢?

枚举每种类型,蓝后枚举它们的边

如果该边被使用了(通过判断反向边的流量),且连接的另一点不是汇点

那么就找到一个被用的题了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
inline int Min(int a,int b){return a<b?a:b;}
void read(int &x){
static char c=getchar();x=;
while(c<''||c>'') c=getchar();
while(''<=c&&c<='') x=x*+(c^),c=getchar();
}
#define N 1050
#define M 210000
int n,m,k,S,T,d[N],cur[N]; bool vis[N];
int cnt=,hd[N],nxt[M],ed[N],poi[M],val[M];
queue <int> h;
void adde(int x,int y,int v){
nxt[ed[x]]=++cnt; hd[x]=hd[x]?hd[x]:cnt;
ed[x]=cnt; poi[cnt]=y; val[cnt]=v;
}
bool bfs(){
memset(vis,,sizeof(vis));
h.push(S); vis[S]=; d[S]=;
while(!h.empty()){
int x=h.front(); h.pop();
for(int i=hd[x];i;i=nxt[i]){
int to=poi[i];
if(!vis[to]&&val[i]>){
vis[to]=; d[to]=d[x]+;
h.push(to);
}
}
}return vis[T];
}
int dfs(int x,int a){
if(x==T||a==) return a;
int f,F=;
for(int &i=cur[x];i&&a;i=nxt[i]){
int to=poi[i];
if(d[to]==d[x]+&&(f=dfs(to,Min(a,val[i])))>)
a-=f,F+=f,val[i]-=f,val[i^]+=f;
}return F;
}
int dinic(){
int re=;
while(bfs()){
for(int i=;i<=T;++i) cur[i]=hd[i];
re+=dfs(S,1e9);
}return re;
}
inline void link(int x,int y,int v){adde(x,y,v),adde(y,x,);}
int main(){
read(k);read(n); register int i,j,q;
S=n+k+; T=S+;
for(i=;i<=k;++i) read(q),m+=q,link(i+n,T,q);
for(i=;i<=n;++i){
read(j); link(S,i,);
while(j--) read(q),link(i,q+n,);
}
if(dinic()!=m){puts("No Solution!");return ;}
for(i=;i<=k;++i){
printf("%d:",i);
for(j=hd[i+n];j;j=nxt[j])
if(poi[j]!=T&&val[j])
printf(" %d",poi[j]);
printf("\n");
}return ;
}

P2763 试题库问题(dinic)的更多相关文章

  1. 【题解】 P2763 试题库问题(网络流)

    P2763 试题库问题 考虑一个试题要被加入进答案的集合有什么条件? 是某种类型 只算作一次 就这两种且的限制,所以我们用串联的方式连接"类型点"和"作用点". ...

  2. 网络流问题 P2763 试题库问题

    题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...

  3. 洛谷 P2763 试题库问题(网络流24题之一)

    题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...

  4. [洛谷P2763]试题库问题

    题目大意:有 $k$ 种类型和 $n$ 个题目,每个题目会适应部分类型,第$i$个类型需要$s_i$的题,一道题只能满足一种类型,现要求出满足所有类型的题目的方案 题解:看到匹配,想到网络流,源点向试 ...

  5. 洛谷P2763 试题库问题(最大流)

    题意 $n$道试题,每道题有多种类别属性 抽取$m$道题组成试卷,要求包含指定的类型 输出方案 Sol 又是一道zz网络流 我的构图长这样,$k_i$表示第$i$道试题需要的数量 #include&l ...

  6. P2763 试题库问题 (网络流 最大流)

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

  7. luogu P2763 试题库问题

    本题可以用最大流也可以用最大匹配(本质一样),用dinic最大流好建图,但码量大,匈牙利码量小,建图费点劲. 最大流:依旧是设一个源点一个汇点,对于每一个种类,连一条到汇点的边,capacity为需要 ...

  8. 洛谷 [P2763]试题库问题

    非常舒适的最大流 非常显然的建图方法,然而因为数组开小卡了很长时间 #include <iostream> #include <cstdio> #include <alg ...

  9. 洛谷P2763 试题库问题(最大流)

    传送门 网络流界的一股清流啊……终于没那么变态了…… 考虑一下怎么建图.对于每一个类型,我们从$S$向他连边,容量为它所需的题数,表明它要可以有这么多题,对于每一道题目,我们从它对应的类型向他连边,容 ...

随机推荐

  1. 【Java】-NO.17.EBook.4.Java.1.014-【疯狂Java讲义第3版 李刚】- Annotation

    1.0.0 Summary Tittle:[Java]-NO.17.EBook.4.Java.1.014-[疯狂Java讲义第3版 李刚]-  Annotation Style:EBook Serie ...

  2. 16个PHP设计模式详解

    说明:该教程全部截选自实验楼教程[16个PHP设计模式详解]:主要介绍16个常用的设计模式的基础概念和技术要点,通过UML类图帮助理解设计模式中各个类之间的关联关系,针对每种设计模式都使用PHP完成了 ...

  3. [pat]1007 Maximum Subsequence Sum

    经典最大连续子序列,dp[0]=a[0],状态转移dp[i]=max(dp[i-1]+a[i],a[i])找到最大的dp[i]. 难点在于记录起点,这里同样利用动态规划s[i],如果dp[i]选择的是 ...

  4. JavaScript 深入了解对象中的属性

    本篇主要介绍JS中对象的属性,包括:属性的分类.访问方式.检测属性.遍历属性以及属性特性等内容. 目录 1. 介绍:描述属性的命名方式.查找路径以及分类 2. 属性的访问方式:介绍'.'访问方式.'[ ...

  5. sqlserver恢复数据库被挂起

    已测试过,直接执行此句后,数据库恢复原状态.数据不会丢失.具体是什么意思,暂时没来得及搞明白 RESTORE database dbname with norecovery

  6. idea创建java的web项目

    2. 3. 4. 5. 6. 步骤八: 点击那个倒立的三角形,然后点击Edit Configurations; 步骤八: 步骤九:配置tocat服务器 步骤十:哎,发现,我怎么就只有一个选项呀,art ...

  7. 通过改hosts访问wikipedia

    能访问https://www.wikipedia.org 大部分时候我们是可以访问的wikipedia的主页或是英文首页的,但中文页面却经常被墙,这时候你可以通过在命令行下ping www.wikip ...

  8. 参数化define

    SV中的define,可以是对var类型,也可以是对function类型的,或者其他任何可以直接替换的字符. `define  wordsize   8 应用 logic [1 :·wordsize] ...

  9. shell作业控制(后台前台命令)

    ctrl+z暂停命令(任务) fg调回命令    |          fg +id号 bg放在后台持续执行 vmstat 1 &  在后面加上‘&’ 即相当于bg jobs列出当前的 ...

  10. crm

    CRM 开发 需求分析 存储所有的客户咨询信息 避免重复数据 客户的多次跟踪记录 客户来源.成单率分析 每个销售只能修改自己的客户信息 报名流程开发 班级管理 学员成绩,出勤管理 问卷调查 校区管理 ...