LuoguP2763 试题库问题(最大流)
2024-09-24 04:14:47
建图同_____
代码:
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
const int oo=0x3f3f3f3f;
struct pnt{
int hd;
int lyr;
int now;
}p[];
struct ent{
int twd;
int lst;
int vls;
}e[];
int k,n;
int s,t;
int cnt;
int sum;
std::queue<int>Q;
void ade(int f,int t,int v)
{
cnt++;
e[cnt].twd=t;
e[cnt].vls=v;
e[cnt].lst=p[f].hd;
p[f].hd=cnt;
return ;
}
bool Bfs(void)
{
while(!Q.empty())
Q.pop();
for(int i=;i<=t;i++)
p[i].lyr=;
p[s].lyr=;
Q.push(s);
while(!Q.empty())
{
int x=Q.front();
Q.pop();
for(int i=p[x].hd;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].lyr==&&e[i].vls>)
{
p[to].lyr=p[x].lyr+;
if(to==t)
return true;
Q.push(to);
}
}
}
return false;
}
int Dfs(int x,int fll)
{
if(x==t)
return fll;
for(int& i=p[x].now;i;i=e[i].lst)
{
int to=e[i].twd;
if(p[to].lyr==p[x].lyr+&&e[i].vls>)
{
int ans=Dfs(to,std::min(fll,e[i].vls));
if(ans>)
{
e[i].vls-=ans;
e[((i-)^)+].vls+=ans;
return ans;
}
}
}
return ;
}
int Dinic(void)
{
int ans=;
while(Bfs())
{
int dlt;
for(int i=;i<=t;i++)
p[i].now=p[i].hd;
while(dlt=Dfs(s,oo))
ans+=dlt;
}
return ans;
}
int main()
{
//freopen("a.in","r",stdin);
scanf("%d%d",&k,&n);
s=k+n+;
t=s+;
for(int i=;i<=k;i++)
{
int v;
scanf("%d",&v);
sum+=v;
ade(i,t,v);
ade(t,i,);
}
for(int i=;i<=n;i++)
{
int p;
scanf("%d",&p);
ade(s,i+k,);
ade(i+k,s,);
for(int j=;j<=p;j++)
{
int tp;
scanf("%d",&tp);
ade(i+k,tp,);
ade(tp,i+k,);
}
}
int tot=Dinic();
if(tot!=sum)
{
printf("No Solution!\n");
return ;
}
for(int i=;i<=k;i++)
{
printf("%d:",i);
for(int j=p[i].hd;j;j=e[j].lst)
{
int to=e[j].twd;
if(to!=t&&e[j].vls>)
printf(" %d",to-k);
}
puts("");
}
return ;
}
最新文章
- 使用block进行界面之间的反向传值
- 用jsonp格式的数据进行ajax post请求变成get
- 可以用WMI来获取磁盘及分区编号
- I.MX6 linux Qt 同时支持Touch、mouse
- Standalone HBase
- Hadoop单机模式安装
- Java基础知识强化46:StringBuffer类之判断一个字符串是否对称案例
- JQuery window、document、 body
- 英文:known good assembly(KGA) / 中文:确认好的组装件,已知好组装件
- Spring事务管理的两种方式
- 在VS2017下配置OpenGL
- 第二章 python的介绍及变量
- jupyter notebook中使用mpld3进行交互
- CCPC-Wannafly Winter Camp Day4 G---置置置换【递推】【组合数】【逆元】
- python基础知识-11-函数装饰器
- bzoj4815[CQOI2017]小Q的格子
- delphi crc校验函数
- void f(int(&;amp;p)[3]){} 和void f(int(*p)[3]){}的差别
- sap人员编制
- SQL查询性能优化
热门文章
- [JSOI2007]建筑抢修 优先队列 贪心
- 在 yii2.0 框架中封装导出html 表格样式 Excel 类
- scrapy xpath选择器多级选择错误
- 一个HelloWorld版的MySQL数据库管理器的设计与实现(源码)
- PKU 2411 Mondriaan&#39;s Dream 状态DP
- 从零開始学android&;lt;SlidingDrawer 隐式抽屉.三十三.&;gt;
- 关于App程序猿泡沫
- ASIHTTPRequest导入出错-libxml出错, i386 ";_deflate";
- 17. IntelliJ IDEA + Maven创建Java Web项目
- AngularJS初接触