传送门

好题啊,由于每个点既可以进,也可以出,就可以新建一个源点和汇点,对于每个点都连边,然后就是最小流板子了。

代码:

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
void read(int &x) {
char ch; bool ok;
for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
queue<int>q;int ans,ss,dis[1001],tt,n,m,s,t,inf=1e9,sum,pre[30001],cnt=1,in[301],nxt[30001],h[301],v[30001];
void add(int x,int y,int z)
{
pre[++cnt]=y,nxt[cnt]=h[x],h[x]=cnt,v[cnt]=z;
pre[++cnt]=x,nxt[cnt]=h[y],h[y]=cnt,v[cnt]=0;
}
bool bfs(int s,int t)
{
memset(dis,0,sizeof dis);
q.push(s);dis[s]=1;
while(!q.empty())
{
int x=q.front();q.pop();
for(rg int i=h[x];i;i=nxt[i])if(v[i]&&!dis[pre[i]])dis[pre[i]]=dis[x]+1,q.push(pre[i]);
}
return dis[t];
}
int dfs(int x,int flow,int t)
{
if(x==t||!flow)return flow;
int f=flow;
for(rg int i=h[x];i;i=nxt[i])
if(v[i]&&dis[pre[i]]>dis[x])
{
int y=dfs(pre[i],min(v[i],f),t);
f-=y,v[i]-=y,v[i^1]+=y;
}
if(!f)dis[x]=-1;
return flow-f;
}
int main()
{
read(n);
for(rg int i=1;i<=n;i++)
{
read(m);
for(rg int j=1,x;j<=m;j++)read(x),add(i,x,inf-1),in[x]++,in[i]--;
}
ss=0,tt=n+1,s=n+2,t=n+3;
for(int i=1;i<=n;i++)
{
if(in[i]>0)add(ss,i,in[i]);
if(in[i]<0)add(i,tt,-in[i]);
add(s,i,inf),add(i,t,inf);
}
add(t,s,inf);
for(;bfs(ss,tt);sum+=dfs(ss,inf,tt));sum=v[cnt];
for(int i=h[ss];i;i=nxt[i])v[i]=v[i^1]=0;
for(int i=h[tt];i;i=nxt[i])v[i]=v[i^1]=0;
v[cnt]=v[cnt^1]=0;
for(;bfs(t,s);ans+=dfs(t,inf,s));
printf("%d\n",sum-ans);
}

最新文章

  1. SQL-server的事务,视图和索引
  2. [Golang] 一个简易代理池
  3. 6.HotSpot垃圾收集器
  4. Matlab中imshow()函数的使用
  5. Seajs教程
  6. C# 除法的细节
  7. leetcode之旅(6)-Add Digits
  8. 将svg文件化成字体图标的步骤
  9. SpringBoot+thymeleaf+security+vue搭建后台框架 基础篇(一)
  10. DAY11、函数总结
  11. pytorch dataloader num_workers
  12. C# 反射Reflection Assembly
  13. Taro、Weex、Hippy 齐聚IMWebConf 2018!
  14. STM32 f407 温湿度采集报警
  15. 再谈C#委托与事件
  16. 【mybatis】mybatis进行批量更新,报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right
  17. python实现百度地图API获取某地址的经纬度
  18. Wannafly挑战赛18C 异或和
  19. 跟着我一起学习大数据——Hadoop
  20. MongoDB 创建集合

热门文章

  1. Javascript学习之正则表达式详解
  2. Masonry库的使用
  3. java to Json or Json to JavaBean
  4. 基于BASYS2的VHDL程序——数字钟(改进版)
  5. html5--3.8 input元素(7)
  6. Hibernate 模糊查询 &#39; %?% &#39; SQL执行异常
  7. CISCO-从TFTP上上传/下载配置文件
  8. Ubuntu 16.04 安装wine
  9. .NET Framework4网站 无法运行,提示找不到网络名,IO错误等解决办法
  10. 通过url在两个页面之间传值