HRBEU 购物(最大流模版题)
来源:互联网 发布:软件侵权判刑吗 编辑:程序博客网 时间:2024/04/30 15:49
购物
TimeLimit: 1 Second MemoryLimit: 32 Megabyte
Totalsubmit: 9 Accepted: 2
Description
Acmer开了一家超市,出售n种物品(标号从1到n),每种物品有pi件,现在知道有m个顾客来买东西,他们看中了一些物品,他们的要求很低,只要能买到其中一个物品他们就满足了,问最多能满足几个顾客。Input
输入包括多组,每组第一行包括两个整数n,m。接下来是n个整数,代表每个物品的数量。最后有m行,每行第一个整数k代表顾客看中的物品数量,接着的k个数为顾客看中的物品编号(所有数据小于200)。Output
对每组输入,先输出一行”Case T:”,T初始为1。然后输出最多有几名顾客能至少买到一件他们看中的物品。Sample Input
3 4
1 1 1
1 1
2 1 2
1 2
1 3
3 4
2 1 1
1 1
2 1 2
1 2
1 3
Sample Output
Case 1:
3
Case 2:
4
Source
[p][/p]#include<cstdio>
#include<cstring>
#include<climits>
#include<algorithm>
using namespace std;
#define N 90005
#define M 4000005
#define INF INT_MAX
int s,t,num,pre[N],dis[N],gap[N],head[N],cur[N];
struct node{
int u,v,w;
int next;
}e[M];
inline void add(int u,int v,int w){
e[num].u=u;
e[num].v=v;
e[num].w=w;
e[num].next=head[u];
head[u]=num++;
}
void addedge(int u,int v,int w){
add(u,v,w);
add(v,u,0);
}
int isap(int s,int t,int n){
int top,mindis,maxflow=0,v,i,aug;
bool flag;
for(i=0;i<=n;i++){
cur[i]=head[i];
gap[i]=dis[i]=0;
}
top=pre[s]=s;
aug=INF;
while(dis[s]<n){
flag=0;
for(i=cur[top];i!=-1;i=e[i].next){
v=e[i].v;
if(e[i].w>0&&dis[top]==dis[v]+1){
flag=1;
break;
}
}
if(flag){
pre[v]=top;
cur[top]=i;
aug=min(aug,e[i].w);
top=v;
if(top==t){
while(top!=s){
top=pre[top];
e[cur[top]].w-=aug;
e[cur[top]^1].w+=aug;
}
top=s;
maxflow+=aug;
aug=INF;
}
}
else{
if(--gap[dis[top]]==0)
break;
mindis=n+2;
cur[top]=head[top];
for(i=head[top];i!=-1;i=e[i].next){
v=e[i].v;
if(e[i].w>0&&dis[v]+1<mindis){
mindis=dis[v]+1;
cur[top]=i;
}
}
dis[top]=mindis;
gap[mindis]++;
if(top!=s)
top=pre[top];
}
}
return maxflow;
}
void init(){
num=0;
memset(head,-1,sizeof(head));
}
int main(){
int i,j,n,m,a,b,ans,cas=1;
while(~scanf("%d%d",&n,&m)){
s=0;
t=n+m+1;
init();
for(i=1;i<=n;i++){
scanf("%d",&a);
addedge(0,i,a);
}
for(i=1;i<=m;i++){
scanf("%d",&a);
for(j=1;j<=a;j++){
scanf("%d",&b);
addedge(b,i+n,1);
}
}
for(i=n+1;i<=n+m;i++)
addedge(i,t,1);
ans=isap(s,t,t+1);
printf("Case %d:\n",cas++);
printf("%d\n",ans);
}
return 0;
}
- HRBEU 购物(最大流模版题)
- 【AC梦工厂】最大流hdu1532模版题
- Dinic最大流模版
- 最大流模版
- 最大流模版
- 最大流模版
- 最大流模版
- 最小费用最大流模版
- 最大流dinic总结模版
- 最小费用最大流模版
- 最大流:SAP+GAP模版
- 最大流模版Dinic算法
- 最小费用最大流模版
- hdu2063(最大匹配--模版题)
- 最大费用最大流模版(POJ 3422)
- POJ:1273 Drainage Ditches(网络最大流模版题)
- [模版] 网络流最大流、费用流
- 网络流之 最大流模版
- ps aux指令详解
- 各大词典的中文翻译都不对,binaries在it界里是“版本”的意思
- 实验二 SCVMM高可用性安装
- General MTD documentation
- 业力
- HRBEU 购物(最大流模版题)
- 天勤OJ 题目1220: 字符串处理
- ZOJ 1889 Ones
- 常见协议在TCP/IP层中的分布
- 北京千禧大酒店。
- onenote2007屏幕剪辑或插入图片是报错。
- UNIX系统编程(1)
- ssh 配置 及详细信息
- 数据结构 递归 uva 10562 - Undraw the Trees