正题


题目大意

有nnn个任务,完成需要先决条件,然后有完成价值。选择一些任务完成,求最大价值。


解题思路

首先,如果有环,那么这些环是不可能完成的。所以先用拓扑排序找环。

然后考虑最大子权闭合图,对于正数点用原点连接,而负数点则连接汇点。容量为权值的绝对值。

然后对于每个点连接先决条件。

然后跑最大子权闭合图


codecodecode

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=510,inf=2147483647/3;
struct node{int to,next,w;
}a[N*N*2];
int n,tot,ls[N],in[N],v[N],ans,dep[N],s,e;
int m[N],edge[N][N];
queue<int> q;
void addl(int x,int y)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;in[y]++;
}
void adde(int x,int y,int w)
{a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;
}
void top()
{for(int i=1;i<=n;i++)if(!in[i]) q.push(i);while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;in[y]--;if(!in[y])q.push(y);}}
}
bool bfs()
{memset(dep,0,sizeof(dep));while(!q.empty()) q.pop();q.push(s);dep[s]=1;while(!q.empty()){int x=q.front();q.pop();for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(!dep[y]&&a[i].w){dep[y]=dep[x]+1;if(y==e) return true;q.push(y);}}}return false;
}
int dinic(int x,int flow)
{int rest=0,k;if(x==e) return flow;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(dep[x]+1==dep[y]&&a[i].w){rest+=(k=dinic(y,min(a[i].w,flow-rest)));a[i].w-=k;a[i^1].w+=k;if(rest==flow) return flow;}}if(!rest) dep[x]=0;return rest;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&v[i],&m[i]);for(int j=1;j<=m[i];j++){scanf("%d",&edge[i][j]);addl(edge[i][j],i);}}top();memset(ls,0,sizeof(ls));tot=1;s=n+1;e=n+2;for(int i=1;i<=n;i++){if(in[i]) continue;if(v[i]<0) adde(i,e,-v[i]);else adde(s,i,v[i]),ans+=v[i];for(int j=1;j<=m[i];j++){if(in[edge[i][j]]) continue;adde(i,edge[i][j],inf);}}while(bfs())ans-=dinic(s,inf);printf("%d",ans);
}

nssl1299-选做作业【最大流,最小割,最大子权闭合图】相关推荐

  1. 【图割】最大流/最小割算法详解(Yuri Boykov and Vladimir Kolmogorov,2004 )

    本博客主要翻译了Yuri Boykov and Vladimir Kolmogorov在2004年发表的改进最大流最小割算法用于计算机视觉的论文:An Experimental Comparison ...

  2. 网络流 最大流 最小割 费用流

    [腾讯文档]网络流初步 网络流初步 文章目录 网络流初步 一.网络流简介 1. 网络 2. 流 3. 再次理解网络流 二.常见题型(三种) 三.相关问题对应算法介绍 1.最大流 (1) FF算法 - ...

  3. 学习笔记:网络流基础:理解最大流/最小割定理 (蒋炎岩)

    网络流基础:理解最大流/最小割定理 蒋炎岩 课程链接 有向图的基本概念: 问题引入 直观感受反例 引入重要概念: 割的示例 小结 再来一个问题 例子 可以找到一条路径的情况 可以找到两条路径的情况 问 ...

  4. 最大流最小割经典例题_最大流, 最小割问题及算法实现

    本博客采用创作共用版权协议, 要求署名.非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议. 由于博文中包含一些LaTex格式数学公式, 在简书中显示不好, 所以 ...

  5. Dinic求最大流/最小割

    o(v^2*E) 建图时建一条流量为0的反向边,正向边每减去流量f,反向边增加流量f.对于无向图当做两条边. cap:每条边最大流量 建图后: 调用DINIC():用bfs()为每个节点进行层次编号, ...

  6. P2774-方格取数问题【网络流,最大流,最小割】

    正题 链接: https://www.luogu.org/problemnew/show/P2774 题意 在一个n*m的数字矩阵中取数,取得数不能相邻,求能取到的最大价值. 解题思路 最大价值,那么 ...

  7. [ZJOI2009]狼和羊的故事【网络流】【最大流(最小割)】

    >Description 羊狼圈是一个n*m个矩阵格子,这个矩阵的边缘已经装上了篱笆.在羊狼圈中再加入一些篱笆,将羊狼分开.狼和羊都有属于自己领地,若狼和羊们不能呆在自己的领地,那它们就会变得非 ...

  8. Cops and Robbers(最大流 最小割)

    https://vjudge.net/problem/Kattis-copsandrobbers 题意: 将某些位置堵上,不能使得B出去,不同字母不同花费,求最小花费. 解析: 使B与外面分离,就是最 ...

  9. 最大流=最小割 简单证明

    割是什么 割的定义就是,在一个图中取出一些有向的边.把图一分为二,使得,再也没有办法,使得能从S到达T的流量. 我们有好多种,拿走边的方案,我们把拿走这些边的值加在一起,那么称作割的Value,现在记 ...

最新文章

  1. 关于新技术的引入原则 ——从零开始学架构
  2. Nuxt.js - nuxt-link与router-link的差异
  3. matlab v7.0,matlab下载-matlab免费版v7.0 官方版下载-6188手游网
  4. Django中cookie和session的存、取、删除
  5. Matlab中下标、斜体及希腊字母的使用方法
  6. CH - 0805 防线(二分+思维)
  7. hadoop实例分析之WordCount单词统计分析
  8. vs可以调用java接口吗_关于vs2010下编译dll动态库,JNA接口在java中调用的问题
  9. ural(Timus) 1019 Line Painting
  10. 微信小程序制作课程表_课表微信小程序实现(纯技术文)
  11. java猜拳论文_Java人机猜拳实现的思路及方法实例
  12. pg库和mysql的优缺点_MySQL与PostgreSQL的实际性能比较
  13. hdu 1059 Dividing(多重DP)
  14. 数据科学包3-pandas快速入门2
  15. hello github
  16. xshell、xftp官方免费版下载
  17. Linux磁盘分区及文件系统格式化和挂载
  18. C++实现11平台魔兽全图外挂
  19. 视频教程-Xamarin技术讲座——初级篇-其他
  20. RFID的无线通信原理

热门文章

  1. php 中 t怎么打开,怎么在PHP项目中实现一个explort() 功能
  2. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下
  3. android mvc mvp 简书,浅析 MVP,MVC,MVVM模式(Android)
  4. linux仿真速度快吗,Linux上安装使用最快的GPU加速的终端仿真器Alacritty
  5. linux定时关机命令_win10电脑定时关机命令
  6. post多个参数_关于HTTP GET和POST的区别
  7. leetcode142. 环形链表 II(暴力+双链表)
  8. 满汉楼(德鲁伊连接池+DBUtils+DAO+Mysql)保姆级别分析+代码实现
  9. 7-23 还原二叉树 (25 分)(分析加详解)
  10. 计算机学科的三大科学形态,华中科技大学 计算机科学与技术方法论 3计算学科中的三个学科形态.ppt...