高阶传送魔法

在神奇的Kasukabe国家,人们努力拥有一个技能。一共有N个类型的技能,并且开始的时候拥有第 i 种技能的人有Ci个 。

这个国家有T个巫师,他们有能力将一个人的技能进行转换。每个巫师有两个转移的列表,A和B , 他可以将一个人的技能从技能x转换为技能y当且仅当x∈A并且y∈B,转换后他会把x从A中删除,y从B中删除 。

注意:

  • 一个巫师可以进行 0 或 多次转换,只要他的转换满足上述要求。
  • 一个人可以进行多次转换。
  • 技能同类转换也是允许的。

你的目标是设计一系列的转换是的最后所有人获得最多不同的技能。

只要想到网络流就很容易了

#include<cstdio>
#include<algorithm>
#define MN 40001
using namespace std; int read_p,read_ca,read_f;
inline int read(){
read_p=;read_ca=getchar();read_f=;
while(read_ca<''||read_ca>'') read_f=read_ca=='-'?-:read_f,read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p*read_f;
}
const int INF=1e9;
struct na{int y,z,ne;}b[MN*];
int n,m,num=,no=,S,T,mmh=,g[MN],c[MN],d[MN],l[MN];
inline void in(int x,int y,int z){b[++num].y=y;b[num].z=z;b[num].ne=l[x];l[x]=num;}
inline void add(int x,int y,int z,int Z=){in(x,y,z);in(y,x,Z);}
inline int min(int a,int b){return a<b?a:b;}
int sap(int x,int f){
if (x==T) return f;
int h=,q;
for (int i=d[x];i;i=b[i].ne)
if (b[i].z&&g[b[i].y]+==g[x]){
q=sap(b[i].y,min(b[i].z,f-h));
h+=q;b[i].z-=q;b[i^].z+=q;
if (h==f||g[S]==no) return h;
}
if (!(--c[g[x]])) g[S]=no;d[x]=l[x];c[++g[x]]++;
return h;
}
signed main(){
static int a[],b[];
register int i,j;
n=read();m=read();S=;T=no=n*m*+n+;
if (!m){
for (int i=;i<=n;i++) mmh+=bool(read());
printf("%d\n",mmh);
return ;
}
for (i=;i<=n;i++) add(S,i,read()),add(n*m*+i,T,);
for (int k=;k<m;k++){
int N=k**n;
a[]=read();
for (i=;i<=a[];i++) a[i]=read();
b[]=read();
for (i=;i<=b[];i++) b[i]=read();
for (i=;i<=n;i++) add(N+i,N+n+i,),add(N+*n+i,N+*n+i,),add(N+i,N+*n+i,INF);
for (i=;i<=a[];i++)
for (j=;j<=b[];j++) add(N+n+a[i],N+*n+b[j],);
}
for (;g[S]<no;mmh+=sap(S,INF));
printf("%d\n",mmh);
}

最新文章

  1. 使用context来传递数据,一个context是一系列变量
  2. [Weblogic]startWebLogic.cmd配置JAVA_OPTIONS无效的解决思路与方案
  3. JSP初识
  4. MFC类目录及头文件(转)
  5. C# 固定窗体大小且不能鼠标调整大小完美实现
  6. 通过缓存数据库结果提高PHP性能(转)
  7. Ubuntu gedit 折叠插件
  8. mysql 不能远程连接
  9. stdout 与 stderr 的区别
  10. linux-touch
  11. vue搭建环境
  12. POI--HSSFCell类
  13. sql 服务启动失败 SQL Server(MSSQLSERVER) 错误码126
  14. flink Standalone Cluster
  15. kepware http接口 Objective-C开发
  16. 【ACM】杭电ACM题一直WA求高手看看代码
  17. &amp;class::data_member与&amp;object.data_menber之间的差异
  18. 关于逻辑删除标识字段value的设定
  19. ibatis中的符号#跟$区别
  20. 跟着百度学PHP[15]-SESSION的应用/网站登陆案例完整案例

热门文章

  1. LR接口压力测试实战(限量抢红包接口)
  2. JavaScript基础4——关于语句流程控制(分支语句、循环语句等)
  3. asp.net mvc 下拉列表
  4. JDBC 程序实例小练习
  5. bzoj 4198: [Noi2015]荷马史诗
  6. Java禁止浏览器有缓存的源码
  7. css自适应
  8. Ruby学习之动态调用
  9. 如何实现虚拟机(VirtualBox)中的Ubuntu与Windows XP间的数据共享
  10. java内存溢出问题