UVA - 10779

思路:

  最大流;

  s向所有的贴纸的种类连边,流量为Bob拥有的数量;

  然后,Bob的朋友如果没有这种贴纸,则这种贴纸向bob的朋友连边,容量1;

  如果bob的朋友的贴纸很多大于1,向该贴纸的种类连边,容量数量-1;

  所有贴纸的种类向t连边,容量1;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 1005
#define maxque 100005
#define INF 0x7fffffff int V[maxque],F[maxque],cnt,s,t,num[maxn][maxn];
int n,m,head[maxn],que[maxque],E[maxque],ans,deep[maxn]; inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} inline void edge_add(int u,int v,int f)
{
E[++cnt]=head[u],V[cnt]=v,F[cnt]=f,head[u]=cnt;
E[++cnt]=head[v],V[cnt]=u,F[cnt]=,head[v]=cnt;
} inline bool bfs()
{
for(int i=s;i<=t;i++) deep[i]=-;
int h=,tail=,now;que[h]=s,deep[s]=;
while(h<tail)
{
now=que[h++];
for(int i=head[now];i;i=E[i])
{
if(deep[V[i]]<&&F[i]>)
{
deep[V[i]]=deep[now]+;
if(V[i]==t) return true;
que[tail++]=V[i];
}
}
}
return false;
} inline int flowing(int now,int flow)
{
if(now==t||flow<=) return flow;
int oldflow=;
for(int i=head[now];i;i=E[i])
{
if(F[i]&&deep[V[i]]==deep[now]+)
{
int pos=flowing(V[i],min(flow,F[i]));
flow-=pos,oldflow+=pos,F[i]-=pos,F[i^]+=pos;
if(flow==) return oldflow;
}
}
if(oldflow==) deep[now]=-;
return oldflow;
} int main()
{
int T;in(T);
for(int v=;v<=T;v++)
{
cnt=,in(n),in(m),s=,t=n+m+,ans=;int pos,num_;
memset(num,,sizeof(num)),memset(head,,sizeof(head));
for(int i=;i<=n;i++)
{
in(num_);
for(int j=;j<=num_;j++) in(pos),num[i][pos]++;
}
for(int i=;i<=m;i++)
{
edge_add(n+i,t,);
if(num[][i]) edge_add(s,n+i,num[][i]);
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(num[i][j])
{
if(num[i][j]>) edge_add(i,j+n,num[i][j]-);
}
else edge_add(j+n,i,);
}
}
while(bfs()) ans+=flowing(s,INF);
printf("Case #%d: %d\n",v,ans);
}
return ;
}

最新文章

  1. HTML5 - HTML5 postMessage API 注意事项
  2. DynamoDB Local for Desktop Development
  3. 半斤八两(创业兴家版 打工仔心声&#39;98 Remix)
  4. 关于后台数据库正常存储中文通过Ajax方式传递到前台变成问号的处理
  5. ACM ICPC Team
  6. java第二周学习日记
  7. 基础知识——Cocos2d-x学习历程(三)
  8. Xcode 插件优缺点对比(推荐 20 款插件)
  9. HP Z620 Windows 7 系统安装(含磁盘阵列)
  10. 1.。net框架
  11. val和var和Java
  12. Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
  13. 大数据入门第二十天——scala入门(一)入门与配置
  14. 转 CentOS开启FTP及配置用户
  15. Git冲突和解决冲突
  16. VBA 自动得到分数
  17. HTML5页面,用JS 禁止弹出手机键盘
  18. 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页
  19. python加密包
  20. Vsphere笔记06 Vcenter 部署流程 1

热门文章

  1. [剑指Offer] 29.最小的K个数
  2. Hibernate基本演示
  3. android开发中常犯的几个错误整理
  4. Jprofiler分析WebSphere(配置WebSphereagent代理)
  5. CSS继承—深入剖析
  6. 51nod1254 最大子段和 V2 DP
  7. ListView获取网络数据并展示优化练习
  8. BZOJ 4710 [Jsoi2011]分特产 解题报告
  9. 【TMD模拟赛】黄金拼图 Cao
  10. JavaScript中cookie使用