https://www.cnblogs.com/137shoebills/p/9100790.html

http://poj.org/problem?id=2987

之前写过这道题,码一个dinic的最大流板子。

经典问题,选了一个点就有些点必须选,输出使选出的点的权值和最大的最少点数,并输出该权值和。

建图就是s向权值为正的点连流量为val的边,权值为负的点向t连流量为-val的边,所有的权值和-最大流就是答案。

类似于https://www.cnblogs.com/137shoebills/p/7786985.html

细节是注意流量会爆int

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<queue>
using namespace std;
#define LL long long
const int maxn=;
const LL minf=(LL)1e11;
int n,m,s,t;
LL val[maxn]={};
struct nod{
int y,next;LL v;
}e[];
int head[maxn]={},tot=,dep[maxn]={};
queue<int>q;
bool vis[maxn]={}; int cnt=;
void init(int x,int y,LL v){
e[++tot].y=y;e[tot].v=v;e[tot].next=head[x];head[x]=tot;
}
int bfs(){
q.push(s);
memset(dep,,sizeof(dep));
dep[s]=;
while(!q.empty()){
int x=q.front();q.pop();
for(int i=head[x];i;i=e[i].next){
if(e[i].v&&(!dep[e[i].y])){
dep[e[i].y]=dep[x]+;
q.push(e[i].y);
}
}
}
return dep[t];
}
LL dfs(int x,LL fc){
if(x==t)return fc;
LL tsn=;
for(int i=head[x];i;i=e[i].next){
if(e[i].v&&dep[e[i].y]==dep[x]+){
LL z=dfs(e[i].y,min(fc-tsn,e[i].v));
tsn+=z;e[i].v-=z;e[i^].v+=z;
if(tsn==fc)break;
}
}
return tsn;
}
LL dinic(){
LL tsn=;
while(bfs())tsn+=dfs(s,minf);
return tsn;
}
void getit(int x){
if(x==t)return;
if(x!=s)++cnt;
vis[x]=;
for(int i=head[x];i;i=e[i].next){
if(e[i].v&&!vis[e[i].y]){
getit(e[i].y);
}
}
}
int main(){
scanf("%d%d",&n,&m);
s=n+;t=s+;
LL ans=;
for(int i=;i<=n;++i){
scanf("%lld",&val[i]);
if(val[i]>=){init(s,i,val[i]); init(i,s,); ans+=val[i];}
else{init(i,t,-val[i]);init(t,i,);}
}
for(int i=;i<=m;++i){
int x,y;
scanf("%d%d",&x,&y);
init(x,y,minf);init(y,x,);
}
ans-=dinic();
getit(s);
printf("%d ",cnt);
printf("%lld\n",ans);
return ;
}

POJ 2987 Firing 最大流 网络流 dinic 模板的更多相关文章

  1. POJ 1273 Drainage Ditches (网络流Dinic模板)

    Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...

  2. 洛谷P3376【模板】网络最大流  Dinic模板

    之前的Dinic模板照着刘汝佳写的vector然后十分鬼畜跑得奇慢无比,虽然别人这样写也没慢多少但是自己的就是令人捉急. 改成邻接表之后快了三倍,虽然还是比较慢但是自己比较满意了.虽然一开始ecnt从 ...

  3. POJ 1273 Drainage Ditches(网络流dinic算法模板)

    POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...

  4. POJ 2987 Firing 网络流 最大权闭合图

    http://poj.org/problem?id=2987 https://blog.csdn.net/u014686462/article/details/48533253 给一个闭合图,要求输出 ...

  5. Power Network POJ - 1459 网络流 DInic 模板

    #include<cstring> #include<cstdio> #define FOR(i,f_start,f_end) for(int i=f_startl;i< ...

  6. poj 2987 Firing 最大权闭合图

    题目链接:http://poj.org/problem?id=2987 You’ve finally got mad at “the world’s most stupid” employees of ...

  7. POJ 2987 - Firing - [最大权闭合子图]

    题目链接:http://poj.org/problem?id=2987 Time Limit: 5000MS Memory Limit: 131072K Description You’ve fina ...

  8. POJ 2987 Firing (最大权闭合图)

    Firing Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12108   Accepted: 3666 Descript ...

  9. POJ 2987 Firing【最大权闭合图-最小割】

    题意:给出一个有向图,选择一个点,则要选择它的可以到达的所有节点.选择每个点有各自的利益或损失.求最大化的利益,以及此时选择人数的最小值. 算法:构造源点s汇点t,从s到每个正数点建边,容量为利益.每 ...

随机推荐

  1. Vasya and Shifts CodeForces - 832E (高斯消元)

    大意: 给定$4n$个$m$位的五进制数, $q$个询问, 每个询问给出一个$m$位的五进制数$b$, 求有多少种选数方案可以使五进制异或和为$b$. 高斯消元入门题 每次询问相当于就是给定了$m$个 ...

  2. node-red 使用 创建第一个流程

    前言 这只是一个简单的示例,具体详细文档去官网查看 官网指南:https://nodered.org/docs/user-guide/ 打开浏览器,进入编辑器页面:http://localhost:1 ...

  3. 9 同时搜索多个index,或多个type

    搜索所有index(慎用): GET  /_search 搜一个索引下,所有type,(不指定type即可) GET /beauties/_search 搜多个索引,则多个索引间,用逗号(,)分隔开 ...

  4. docker-每天5分钟玩转Docker容器技术

    安装 https://www.cnblogs.com/qinxu/p/10032176.html 安装教程,目前只能安装到18版本的,安装完后执行下面命令更新到版本19 yum install doc ...

  5. JavaScript_01-script

    编译和解释 var a = 0; console.log(a); var b = "abc"; 编译: 一次性把代码转换成 CPU 可以看懂的语言,一行一行执行: 解释:一行一行解 ...

  6. day53-python之会话

    from django.shortcuts import render,redirect # Create your views here. import datetime def login(req ...

  7. Jmeter学习笔记(七)——监听器元件之察看结果树

    在jmeter中,如果我们需要查看请求结果就需要添加查看结果树,这个监听器元件有那些功能呢? 一.察看结果树界面如下 二.察看结果树界面功能说明 1.所有数据写入文件 (1)文件名:可以通过浏览,选择 ...

  8. mysql如何让有数据的表的自增主键重新设置从1开始连续自增

    项目开发中,有些固定数据在数据表中,主键是从1自增的,有时候我们会删除一些数据, 这种情况下,主键就会不连续.如何恢复到像第一次插入数据一样主键从1开始连续增长, 这里我找到一种解决方法: 如上面一张 ...

  9. 内存域水印值:min_free_kbytes

    1.内存域水印值:需要为关键性分配保留的内存空间的最小值:该值保存在全局变量min_free_kbytes中 2.内存域水印值的计算由函数init_per_zone_pages_min完成: /* * ...

  10. mysql 模糊查询like小结

    以不完整的条件进行查询 因为条件是模糊的 所以叫模糊查询,可以对有相同信息的数据快速归类 . like  运算符:可以很好的通过%和-两种通配符对数据进行筛选查询 %(所有)放在条件前中后.可查询包含 ...