【luogu P2762 太空飞行计划问题】 题解
题目链接:https://www.luogu.org/problemnew/show/P2762
算是拍照那个题的加强下。
输入真的很毒瘤。(都这么说但好像我的过了?)
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn = 1e6 + 10;
const int inf = 1e9;
ll n, m, s, t, deep[maxn], maxflow, w[maxn], ans;
struct edge{
ll next, to, flow;
}e[maxn<<2];
ll head[maxn], cnt = -1;
queue<ll> q;
void add(ll u, ll v, ll w)
{
e[++cnt].flow = w; e[cnt].next = head[u]; e[cnt].to = v; head[u] = cnt;
e[++cnt].flow = 0; e[cnt].next = head[v]; e[cnt].to = u; head[v] = cnt;
}
bool bfs(ll s, ll t)
{
memset(deep, 0x7f, sizeof(deep));
while(!q.empty()) q.pop();
q.push(s); deep[s] = 0;
while(!q.empty())
{
ll now = q.front(); q.pop();
for(ll i = head[now]; i != -1; i = e[i].next)
{
if(deep[e[i].to] > inf && e[i].flow)
{
deep[e[i].to] = deep[now] + 1;
q.push(e[i].to);
}
}
}
if(deep[t] < inf) return true;
else return false;
}
ll dfs(ll now, ll t, ll limit)
{
if(!limit || now == t) return limit;
ll flow = 0, f;
for(ll i = head[now]; i != -1; i = e[i].next)
{
if(deep[e[i].to] == deep[now] + 1 && (f = dfs(e[i].to, t, min(e[i].flow, limit))))
{
flow += f;
limit -= f;
e[i].flow -= f;
e[i^1].flow += f;
if(!limit) break;
}
}
return flow;
}
void Dinic(ll s, ll t)
{
while(bfs(s, t))
maxflow += dfs(s, t, inf);
}
int main()
{
memset(head, -1, sizeof(head));
scanf("%lld%lldd",&m,&n);
s = 1, t = 2 + n + m;
for(ll i = 1; i <= m; i++)
{
ll u;
scanf("%lld",&w[i]);
ans += w[i];
while(scanf("%lld",&u))
{
add(i + n + 1, u + 1, inf);
if(getchar() == '\n') break;
}
}
for(ll i = 1; i <= n; i++)
{
ll c;
scanf("%lld",&c);
add(i + 1, t, c);
}
for(ll i = 1; i <= m; i++)
{
add(s, i + n + 1, w[i]);
}
Dinic(s, t);
for(ll i = 1; i <= m; i++)
if(deep[i + 1 + n] < inf) printf("%lld ",i);
printf("\r\n");
for(ll i = 1; i <= n; i++)
if(deep[i + 1] < inf) printf("%lld ",i);
printf("\r\n");
printf("%lld",ans - maxflow);
return 0;
}
【luogu P2762 太空飞行计划问题】 题解的更多相关文章
- luogu P2762 太空飞行计划问题
好像是最大权闭合图,也就是最大流最小割啦,找出最大流的路径输出,这题如何建模呢,一样的先设源点和汇点,源点向每个计划连capacity为赞助数的边,每个计划连相应装置capacity为无穷的边,每个装 ...
- 洛谷 P2762 太空飞行计划问题 P3410 拍照【最大权闭合子图】题解+代码
洛谷 P2762 太空飞行计划问题 P3410 拍照[最大权闭合子图]题解+代码 最大权闭合子图 定义: 如果对于一个点集合,其中任何一个点都不能到达此集合以外的点,这就叫做闭合子图.每个点都有一个权 ...
- Luogu 2762 太空飞行计划 / Libre 6001 「网络流 24 题」太空飞行计划 (网络流,最大流)
Luogu 2762 太空飞行计划 / Libre 6001 「网络流 24 题」太空飞行计划 (网络流,最大流) Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行 ...
- 网络流24题:P2762 太空飞行计划问题
P2762 太空飞行计划问题 题目背景 题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,E ...
- P2762 太空飞行计划问题(网络流24题之一)
题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的 ...
- P2762 太空飞行计划问题 网络流
题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的 ...
- 【Luogu】P2762太空飞行计划(最大权闭合图)
题目链接 woc这题目的输入格式和输出格式真的恶心 首先我们就着样例讲一下闭合图 如图所示,第一层是两个实验节点,带来正收益:第二层是三个仪器节点,带来负收益:问讲道理到终点可以获得多大收益. 闭合图 ...
- 洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)
https://www.luogu.org/problemnew/show/P4174 最大权闭合子图的模板 每个通讯站建一个点,点权为-Pi:每个用户建一个点,点权为Ci,分别向Ai和Bi对应的点连 ...
- 洛谷 - P2762 - 太空飞行计划问题 - 最小割
https://www.luogu.org/problemnew/solution/P2762 最小割对应的点,在最后一次更新中dinic的bfs会把他的dep重置掉.所以可以根据这个性质复原最小割. ...
随机推荐
- Docker的基本构架
不多说,直接上干货! Docker的基本构架 Docker基于Client-Server架构,Docker daemon是服务端,Docker client是客户端. Docker的基本架构,如下图所 ...
- oracle中的exists理解
select * from EB where exists (select * from BB where Code=EB.Code) 把select 外层表EB看成是循环的,把每一个值eb.code ...
- c#字典排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java网站开发的一些问题以及解决(cookie消失,上传头像,js等)
1.首先是cookie的问题,很多人都是遇到了将数据存储到cookie中并且add到response之中,但是还有返回其他页面或者刷新页面cookie消失的情况,除了设置cookie的存活时间外, 还 ...
- java开发中的设计模式
http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五 ...
- django基本入门
1.创建应用 2.设计模型 3.语言时区等设置 4. Templates 1.创建应用[MVT] 一个项目可以有多个应用[模块]: 这里已经创建了项目:test1 python manager.py ...
- windows下快速修改host文件
windows下快速修改host文件 win+r 输入 notepad c:\Windows\System32\drivers\etc\hosts
- js 匹配中文字符串(也包含日文和韩文)
<script> var str="payTypeNam门诊账户\n\t"; document.write(str.match(/[\u4E00-\u9FA5\uF90 ...
- 高效的jQuery代码编写技巧
缓存变量 DOM遍历是昂贵的,所以尽量将会重用的元素缓存. // 糟糕 h = $('#element').height(); $(); // 建议 $element = $('#element'); ...
- 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
简介 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性.并不承担具体的恢复数据的角色.正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在 ...