[CF1082G]Petya and Graph
题目大意:一张无向图$G=(V,E)$,定义$f(G)=\sum\limits_{e\in E}w_e-\sum\limits_{v\in V}w_v$,给一张$n(n\leqslant10^3)$个点$m(m\leqslant10^3)$条边的无向图,求$\max_{G'\in G}\{f(G')\}$。
题解:最大权闭合子图。
源点往有代价物品连其边权为其代价的边。
有代价物品往选了它可能产生收益的组连边权为的边。
每个组往汇点连边权为其收益的边。
由源点向原图中的每条边连一条容量为其收益的边,原图中的边向它的两个端点连容量为$\infty$的边,原图中的每个点向汇点连容量为其代价的边
把总收益减去最小割即可
卡点:无
C++ Code:
#include <algorithm>
#include <cstdio>
#define maxn 1010
#define maxm 1010
const int N = maxn + maxm, M = N + 2 * maxm;
const int inf = 0x3f3f3f3f;namespace Network_Flow {int lst[N], head[N], cnt = 1;struct Edge {int to, nxt, w;} e[M << 1];inline void addedge(int a, int b, int c) {e[++cnt] = (Edge) { b, head[a], c }; head[a] = cnt;e[++cnt] = (Edge) { a, head[b], 0 }; head[b] = cnt;}long long MF;int n, st, ed;int GAP[N], d[N];int q[N], h, t;void init() {GAP[d[ed] = 1] = 1;for (int i = 0; i < n; ++i) lst[i] = head[i];q[h = t = 0] = ed;while (h <= t) {int u = q[h++];for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].to;if (!d[v]) {d[v] = d[u] + 1;++GAP[d[v]];q[++t] = v;}}}}int dfs(int u, int low) {if (!low || u == ed) return low;int w, res = 0;for (int &i = lst[u]; i; i = e[i].nxt) if (e[i].w) {int v = e[i].to;if (d[u] == d[v] + 1) {w = dfs(v, std::min(low, e[i].w));res += w, low -= w;e[i].w -= w, e[i ^ 1].w += w;if (!low) return res;}}if (!(--GAP[d[u]])) d[st] = n + 1;++GAP[++d[u]], lst[u] = head[u];return res;}void ISAP(int S, int T) {st = S, ed = T;init();while (d[st] <= n) MF += dfs(st, inf);}
}
using Network_Flow::addedge;int n, m;
long long sum;
int main() {scanf("%d%d", &n, &m); Network_Flow::n = n + m + 2;int st = 0, ed = n + m + 1;for (int i = 1, x; i <= n; ++i) {scanf("%d", &x);addedge(st, i, x);}for (int i = 1, a, b, c; i <= m; ++i) {scanf("%d%d%d", &a, &b, &c);addedge(a, n + i, inf);addedge(b, n + i, inf);addedge(n + i, ed, c);sum += c;}Network_Flow::ISAP(st, ed);printf("%lld\n", sum - Network_Flow::MF);return 0;
}
转载于:https://www.cnblogs.com/Memory-of-winter/p/10341430.html
[CF1082G]Petya and Graph相关推荐
- CF1082G Petya and Graph(最小割,最大权闭合子图)
QWQ嘤嘤嘤 感觉是最水的一道\(G\)题了 顺便记录一下第一次在考场上做出来G qwqqq 题目大意就是说: 给你n个点,m条边,让你选出来一些边,最大化边权减点权 \(n\le 1000\) QW ...
- CodeForces1082G Petya and Graph 最小割
网络流裸题 \(s\)向点连边\((s, i, a[i])\) 给每个边建一个点 边\((u, v, w)\)抽象成\((u, E, inf)\)和\((v, E, inf)\)以及边\((E, t, ...
- [洛谷P4174][NOI2006]最大获利
题目大意:同Petya and Graph,数据范围改成$n\leqslant5\times10^3,m\leqslant5\times10^4$ 题解:同上 卡点:无 C++ Code: #incl ...
- Educational Codeforces Round 55 (Rated for Div. 2)
A.Vasya and Book 三种情况讨论一下 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 ...
- 图融合GCN(Graph Convolutional Networks)
图融合GCN(Graph Convolutional Networks) 数据其实是图(graph),图在生活中无处不在,如社交网络,知识图谱,蛋白质结构等.本文介绍GNN(Graph Neural ...
- Graph Representation 图神经网络
Graph Representation 图神经网络 图表示学习(representation learning)--图神经网络框架,主要涉及PyG.DGL.Euler.NeuGraph和AliGra ...
- TVM 图优化Graph Optimization
TVM 图优化Graph Optimization Codegen
- ONNX 实时graph优化方法
ONNX 实时graph优化方法 ONNX实时提供了各种图形优化来提高模型性能.图优化本质上是图级别的转换,从小型图简化和节点消除,到更复杂的节点融合和布局优化. 图形优化根据其复杂性和功能分为几个类 ...
- MIT Graph实践概述
MIT Graph实践概述 Features功能 • iCloud Support • Multi Local & Cloud Graphs • Thread Safe • Store Any ...
最新文章
- Android启动脚本init.rc(2)
- python培训班排行榜-西安Python培训班排行榜
- GridView里面的HyperLink和ButtonField操作总结
- 太原理工软件学院c语言2020,太原理工软件工程C语言实验报告 数组.doc
- PoE交换机的选择和使用注意事项介绍
- bzoj 3173 最长上升子序列
- Visual Paradigm(一)简介和软件初步
- ubuntu16.04下Qt无法输入中文注释
- linux windows双系统安装教程
- 1. 走进Java语言 —— Java SE
- Linux Oracle卸载步骤
- Docker安装JanusGraph
- 企业开票信息税号查询API接口服务
- 360 路由器设置 虚拟服务器,360安全路由器的设置方法
- HBase 常用操作
- C语言中空格,空字符,字符数组结束符的区别
- 【C++基础】 switch case语句
- 日式键盘与美式键盘转换
- android黑盒子调用,[原创]Android群控黑盒调用 - Sekiro食用手册
- 利用ArcGIS做一张“三调“土地利用现状图(附三调符号库下载)