最大权闭合子图

虽然我自己现在总结不好最大权闭合子图。但也算稍稍理解辣。

网络流起步ing~~~(~ ̄▽ ̄)~

#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
struct node
{
int point;
int nxt;
int value;
};
node line[500000];
int head[5000],tail=-1;
int n,m;
void add(int x,int y,int z)
{
line[++tail].point=y;
line[tail].value=z;
line[tail].nxt=head[x];
head[x]=tail;
line[++tail].point=x;
line[tail].value=0;
line[tail].nxt=head[y];
head[y]=tail;
}
int a[5000],b[5000];
int dep[50000],cur[50000];
bool BFS(int begin,int end)
{
for(int i=begin;i<=end;i++)
{
dep[i]=0;
cur[i]=head[i];
}
queue<int>q;
q.push(begin);
dep[begin]=1;
while(!q.empty())
{
int pas=q.front();
q.pop();
for(int i=head[pas];i!=-1;i=line[i].nxt)
if(!dep[line[i].point]&&line[i].value)
{
dep[line[i].point]=dep[pas]+1;
q.push(line[i].point);
}
}
if(dep[end])
return true;
return false; }
int dfs(int now,int aim,int limte)
{
if(now==aim||!limte)
return limte;
int flow=0,f;
for(int i=cur[now];i!=-1;i=line[i].nxt)
{
cur[now]=i;
if(dep[line[i].point]==dep[now]+1&&(f=dfs(line[i].point,aim,min(limte,line[i].value))))
{
flow+=f;
limte-=f;
line[i].value-=f;
line[i^1].value+=f;
if(!limte)
break;
}
}
return flow;
}
int dinic(int begin,int end)
{
int res=0;
while(BFS(begin,end))
res+=dfs(begin,end,0x7fffffff);
return res;
}
int main()
{
int ans=0;
scanf("%d%d",&n,&m);
for(int i=0;i<=n+m+1;i++)
head[i]=-1;
for(int i=1;i<=m;i++)
scanf("%d",&b[i]);
int num,dat;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&num);
ans+=a[i];
for(int j=1;j<=num;j++)
{
scanf("%d",&dat);
add(i,n+dat,0x7fffffff);
}
}
for(int i=1;i<=n;i++)
add(0,i,a[i]);
for(int i=n+1;i<=n+m;i++)
add(i,n+m+1,b[i-n]);
ans-=dinic(0,n+m+1);
printf("%d",ans);
}

我的代码,让你感到真真的实惠石灰(逃)

hihocoder1398 网络流五之最大权闭合子图的更多相关文章

  1. BZOJ 1565 NOI2009 植物大战僵尸 topo+最小割(最大权闭合子图)

    题目链接:https://www.luogu.org/problemnew/show/P2805(bzoj那个实在是有点小小的辣眼睛...我就把洛谷的丢出来吧...) 题意概述:给出一张有向图,这张有 ...

  2. [HihoCoder1398]网络流五·最大权闭合子图

    题目大意:有$N$项活动$M$个人,每个活动$act_i$有一个正的权值$a_i$,每个人$stu_i$有一个负的权值$b_i$.每项活动能够被完成当且仅当该项活动所需的所有人到场.如何选择活动使最终 ...

  3. [HIHO119]网络流五·最大权闭合子图(最大流)

    题目链接:http://hihocoder.com/contest/hiho119/problem/1 题意:中文题意. 由于1≤N≤200,1≤M≤200.最极端情况就是中间所有边都是满的,一共有N ...

  4. BZOJ 4873 [Shoi2017]寿司餐厅 | 网络流 最大权闭合子图

    链接 BZOJ 4873 题解 当年的省选题--还记得蒟蒻的我Day1 20分滚粗-- 这道题是个最大权闭合子图的套路题.严重怀疑出题人就是先画好了图然后照着图编了个3000字的题面.和我喜欢的妹子当 ...

  5. Cogs 727. [网络流24题] 太空飞行计划(最大权闭合子图)

    [网络流24题] 太空飞行计划 ★★☆ 输入文件:shuttle.in 输出文件:shuttle.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] W 教授正在为国家航天中心计 ...

  6. bzoj1391 最大权闭合子图(also最小割、网络流)

    一道裸的最小割的题,写一下只是练练手. 表示被卡M,RE不开心.一道裸题至于吗? 再次复习一下最大权闭合子图: 1.每一个点若为正权,与源点连一条容量为绝对值权值的边.否则连向汇点一条容量为绝对值权值 ...

  7. P4177 [CEOI2008]order 网络流,最小割,最大权闭合子图

    题目链接 \(Click\) \(Here\) 如果没有租用机器就是一个裸的最大权闭合子图.现在有了租用机器应该怎么办呢? 单独拆点是不行的,因为会和直接买下的情况脱离关系,租借是和连边直接相关的,那 ...

  8. codeforces 1082G - Petya and Graph 最大权闭合子图 网络流

    题意: 让你选一些边,选边的前提是端点都被选了,求所有的边集中,边权和-点权和最大的一个. 题解: 对于每个边建一个点,然后就是裸的最大权闭合子图, 结果比赛的时候我的板子太丑,一直T,(不会当前弧优 ...

  9. P4177 [CEOI2008]order(网络流)最大权闭合子图

    P4177 [CEOI2008]order 如果不能租机器,这就是最大权闭合子图的题: 给定每个点的$val$,并给出限制条件:如果取点$x$,那么必须取$y_1,y_2,y_3......$,满足$ ...

随机推荐

  1. Fiddler相关配置

    1.General 2.HTTPS: 3.Connections 4.Gateway 5.appearance 6.Scripting url过滤: REGEX:\.(js|css|png|gif|h ...

  2. JavaSE---对象序列化

    1.对象序列化机制 允许把内存中的Java对象转换成平台无关的二进制流,从而可以将二进制流持久保存到磁盘 或 在网络中直接传输: (目的:使得对象可以脱离程序的运行而独立存在) package com ...

  3. ERROR:105: Unable to locate a modulefile for 'xxx'

    查看可用的 module:module avail 将xxx替换为屏幕输出中已有的模块.

  4. CentOS 7 Linux 卸载/安装 Mariadb MySQL mysql 5.7

    [root@localhost mysql]# ls mysql-community-client--.el7.x86_64.rpm mysql-community-embedded-compat-- ...

  5. Django重新整理3

    Forms组件 1.在models.py中我们建立一个新的表关系: class UserInfo(models.Model): user=models.CharField(max_length=32) ...

  6. jemalloc报 Unsupported system page size错误

  7. Murano Weekly Meeting 2015.11.11

    Meeting time: 2015.November.11th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting su ...

  8. Spark Streaming简介

    离线计算和实时计算对比 1)数据来源 离线:HDFS历史数据 数据量比较大 实时:消息队列(Kafka),实时新增/修改记录过来的某一笔数据 2)处理过程 离线:MapReduce: map+redu ...

  9. mysql-proxy读写分离,负载均衡

    配置mysql-proxy,创建主配置文件 cd /usr/local/mysql-proxy mkdir lua #创建脚本存放目录 mkdir logs #创建日志目录 cp share/doc/ ...

  10. python 字符串转字节数组

    场景: java加解密和python加解密互转的时候,因一些非显示字符无法确认两者是否一致,故需要打出他们的十六进制字节数组进行比较 1.python代码实现 str='123';print str. ...