【BZOJ3996】【TJOI2015】线性代数 最小割
来源:互联网 发布:php contains 编辑:程序博客网 时间:2024/06/06 19:21
链接:
#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/45200381");}
题解:
题意部分注释:最终的矩阵
首先
然后发现
左边式子
如果
这是个裸的最小割模型。
代码:
#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define N 260000#define M 1600000#define inf 0x3f3f3f3fusing namespace std;struct Eli{ int v,len,next;}e[M];int head[N],cnt;inline void add(int u,int v,int len){ e[++cnt].v=v; e[cnt].len=len; e[cnt].next=head[u]; head[u]=cnt;}inline void Add(int u,int v,int len){ add(u,v,len),add(v,u,0);}queue<int>q;int d[N],s,t;bool bfs(){ while(!q.empty())q.pop(); memset(d,0,sizeof d); int i,u,v; q.push(s),d[s]=1; while(!q.empty()) { u=q.front(),q.pop(); for(i=head[u];i;i=e[i].next) { if(!d[v=e[i].v]&&e[i].len) { d[v]=d[u]+1; if(v==t)return 1; q.push(v); } } } return 0;}int dinic(int x,int flow){ if(x==t)return flow; int i,u,v,k,remain=flow; for(i=head[x];i&&remain;i=e[i].next) { if(d[v=e[i].v]==d[x]+1&&e[i].len) { k=dinic(v,min(e[i].len,remain)); if(!k)d[v]=0; e[i].len-=k,e[i^1].len+=k; remain-=k; } } return flow-remain;}int n,maxflow,id;void build(){ int i,j,k; int a,b,c; scanf("%d",&n); cnt=1,s=0,t=n*n+n+1,id=n; for(i=1;i<=n;i++)for(j=1;j<=n;j++) { scanf("%d",&k); maxflow+=k,id++; Add(s,id,k),Add(id,i,inf),Add(id,j,inf); } for(i=1;i<=n;i++) { scanf("%d",&k); Add(i,t,k); }}int main(){ build(); while(bfs())maxflow-=dinic(s,inf); cout<<maxflow<<endl; return 0;}
0 0
- 【BZOJ3996】【TJOI2015】线性代数 最小割
- [BZOJ3996]TJOI2015线性代数|最小割
- 【bzoj3996】【TJOI2015】【线性代数】【最小割】
- 【BZOJ3996】[TJOI2015]线性代数【最小割】
- 【BZOJ3996】【TJOI2015】线性代数(最小割)
- 【BZOJ3996】线性代数(TJOI2015)-最小割
- BZOJ3996 线性代数(最小割)
- [BZOJ3996] [TJOI2015]线性代数
- BZOJ3996: [TJOI2015]线性代数
- bzoj3996 [TJOI2015]线性代数
- 【bzoj3996】[TJOI2015]线性代数
- 3996: [TJOI2015]线性代数|最小割
- bzoj3996 线性代数 最大闭权子图&最小割
- BZOJ3996: [TJOI2015]线性代数 解题报告
- bzoj3996[TJOI2015]线性代数 网络流
- bzoj 3996: [TJOI2015]线性代数 最小割
- BZOJ3996【最小割】
- 3996: [TJOI2015]线性代数 思路题 最小割(最大权闭合图)
- PHP的几个常用加密函数
- HDU ACM 1517 A Multiplication Game
- 数据结构笔记(一)
- android service基础(1)
- 04-树5. File Transfer (25)
- 【BZOJ3996】【TJOI2015】线性代数 最小割
- 数据存储格式
- linux 命令系列之 用户和组信息文件(22)
- goldengate translations 的捕捉
- 对JAVA集合进行遍历删除时务必要用迭代器
- .9图的绘制
- 玩命牛的成长记录(十二)——会话
- 百度地图Android POI检索
- 一句话记录:Visual Studio 把需引用的文件自动复制到程序输出窗口中的命令