我们只要把他们可以有的限制用流量限制,再用两者关系限制一下就可以开心的跑了。

#include <cstdio>
#include <cstring>
#include <iostream>
#define r register
#define N 1005
using namespace std;
inline int read()
{
r int sum=;
r char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch>=''&&ch<='')
{
sum=(sum<<)+(sum<<)+ch-'';
ch=getchar();
}
return sum;
}
int g[N][N];
struct VIA
{
int to,next,w;
}c[N<<];
int head[N<<],t=;
int n,m,k;
inline void add(int x,int y,int z)
{
c[++t].to=y;
c[t].next=head[x];
head[x]=t;
c[t].w=z;
}
int L[N],C[N],LL[N],CC[N],S,T;
int deep[N<<],q[N<<],top,tail;
inline bool bfs()
{
memset(deep,,sizeof(deep));
q[]=S;
top=tail=;
deep[S]=;
while(top<=tail)
{
r int x=q[top++];
if(x==T)return ;
for(int i=head[x];i;i=c[i].next)
if(c[i].w&&deep[c[i].to]==)
{
deep[c[i].to]=deep[x]+;
q[++tail]=c[i].to;
}
}
return ;
}
inline int Min(int x,int y)
{
return x<y?x:y;
}
int dfs(int x,int v)
{
if(x==T||!v)return v;
r int ret=;
for(r int i=head[x];i;i=c[i].next)
if(c[i].w&&deep[c[i].to]==deep[x]+)
{
r int f=Min(v,c[i].w);
r int w=dfs(c[i].to,f);
v-=w;
ret+=w;
c[i].w-=w;
c[i^].w+=w;
if(!v)break;
}
if(!ret)deep[x]=-;
return ret;
}
inline int dinic()
{
r int ans=;
while(bfs())ans+=dfs(S,0x7f7f7f7f);
return ans;
}
int main()
{
r int ans=;
n=read(),m=read(),k=read();
for(r int i=;i<=n;++i)L[i]=read(),LL[i]=m,ans+=L[i];
for(r int i=;i<=m;++i)C[i]=read(),CC[i]=n,ans+=C[i];
for(r int i=,x,y;i<=k;++i)x=read(),y=read(),g[x][y]=,--LL[x],--CC[y];
for(r int i=;i<=n;++i)
if(L[i]>LL[i])
{
printf("JIONG!\n");
return ;
}
for(r int i=;i<=m;++i)
if(C[i]>CC[i])
{
printf("JIONG!\n");
return ;
}
S=n+m+,T=m+n+;
for(r int i=;i<=n;++i)
for(r int j=;j<=m;++j)
if(!g[i][j])
add(i,j+n,),add(j+n,i,);
for(r int i=;i<=n;++i)
add(S,i,L[i]),add(i,S,);
for(r int i=;i<=m;++i)
add(i+n,T,C[i]),add(T,n+i,);
ans-=dinic();
printf("%d\n",ans);
}

最新文章

  1. PMP 第七章 项目成本管理
  2. POJ3635 Full Tank?(DP + Dijkstra)
  3. IOS new Date() 时间转换失败问题以及其他问题
  4. 4、java中有专门的的函数对数组进行排序
  5. HTML实体对照表
  6. Hadoop JobHistory
  7. java eclise的配置
  8. Window 8.1 计时器功能及图片切换
  9. live555学习经验链接二
  10. Appscan 配置中登录管理的问题
  11. C# 开发AliYun(阿里云) 小蜜调用接口代码
  12. 【DWM1000】 code 解密9一 ANCHOR response poll message
  13. Linq中的左连,右连,内连
  14. Android 动态渐变按钮
  15. C# 面向对象的new关键字的使用
  16. Page11:状态反馈、输出反馈的概念及性能比较,极点配置的基本概念、意义及其算法[Linear System Theory]
  17. linux C单元测试工具CUnit的编译安装及使用
  18. ElasticSearch5.X—模糊查询和获取所有索引字段
  19. 关于Unity中的NGUI精灵
  20. Java位运算加密

热门文章

  1. Spring-Boot ☞ ShapeFile文件读写工具类+接口调用
  2. 第一次学习tornado小练习
  3. (数据科学学习手札11)K-means聚类法的原理简介&amp;Python与R实现
  4. dubbo-admin管理控制台安装和使用
  5. namenode处于安全模式怎么解决?
  6. 在编程的时候,NotePad++ 中闪烁的光标突然有竖着闪烁的编程蓝色下划线闪烁的--小技巧告诉你-费元星
  7. iOS笔记054 - 核心动画
  8. Python 3基础教程25-异常处理
  9. extjs/js时间校验
  10. python基础训练营01