hdu4307 Matrix 最小割
来源:互联网 发布:路由器网络参数设置 编辑:程序博客网 时间:2024/05/01 15:51
...其实SAP也可以写的很短!!,不考虑bfs优化的话20行代码...
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;const int inf=0x3fffffff;const int maxn=1005;struct edge{ int to,ec,next,rev;}ee[maxn*maxn*2];int e[maxn],ecnt;int st,ed,d[maxn],gap[maxn],n,m;queue<int> q;bool inq[maxn];void addedge(int u,int v,int c){ ee[ecnt].to=v;ee[ecnt].ec=c;ee[ecnt].next=e[u];ee[ecnt].rev=ecnt+1;e[u]=ecnt++; ee[ecnt].to=u;ee[ecnt].ec=0;ee[ecnt].next=e[v];ee[ecnt].rev=ecnt-1;e[v]=ecnt++;}void bfs(){ while(!q.empty()) q.pop(); int i,u,v,c; memset(inq,false,sizeof(inq)); memset(gap,0,sizeof(gap)); memset(d,0,sizeof(d)); q.push(ed);d[ed]=0;inq[ed]=true; while(!q.empty()) { u=q.front();q.pop(); for(i=e[u];i!=-1;i=ee[i].next) { v=ee[i].to;c=ee[i].ec; if(c==0&&!inq[v]) { q.push(v);inq[v]=true; d[v]=d[u]+1; } } } for(i=0;i<n;++i) gap[d[i]]++;}int sap(int u,int flow){ if(u==ed) return flow; int i,res=flow,v,c,t; for(i=e[u];i!=-1;i=ee[i].next) { v=ee[i].to;c=ee[i].ec; if(c>0&&d[u]==d[v]+1) { t=sap(v,min(res,c)); ee[i].ec-=t;ee[ee[i].rev].ec+=t; if(!(res-=t)) return flow; } } if(!--gap[d[u]]) d[st]=n; ++gap[++d[u]]; return flow-res;}int main(){ int t,i,j,u,v,c,sum,ans,tot,x; scanf("%d",&t); while(t--) { memset(e,-1,sizeof(e));ecnt=0;// memset(d,0,sizeof(d));// memset(gap,0,sizeof(gap)); scanf("%d",&n); ans=0;tot=0; st=0;ed=n+1; for(i=1;i<=n;++i) { sum=0; for(j=1;j<=n;++j) { scanf("%d",&x); sum+=x; addedge(i,j,x); } tot+=sum; addedge(st,i,sum); } for(i=1;i<=n;++i) { scanf("%d",&x); addedge(i,ed,x); } n+=2; for(bfs();d[st]<n;)// for(gap[0]=n;d[st]<n;) ans+=sap(st,inf); printf("%d\n",tot-ans); } return 0;}
- hdu4307 Matrix 最小割
- HDU4307(最小割)
- hdu4307 Matrix
- HDU 4307 Matrix (最小割)
- 【TOJ 3872.】Matrix【最小割】
- 【最小割】【hdu 4307】Matrix
- HDU 4037 Matrix 最小割模型转换
- hdu 4307 Matrix( 公式化最小割)
- 【HDU】4307 Matrix 最小割——项目分配问题
- HDU 4307 Matrix 最小割 矩阵乘法展开
- HDU 4307 Matrix 最小割模型求未知矩阵最大值
- 最小割
- 最小割
- 最小割
- 最小割
- 【最小割】bzoj:1797最小割
- 2229: [Zjoi2011]最小割 最小割
- 【bzoj2229】【ZJOI2229】【最小割】【最小割】
- 悬崖边上的舞者,记7.2生产数据库灾难事件
- C++ 中int,char,string,CString类型转换(一)
- Acoustic Echo Cancellation (AEC) 回音消除技术探索
- SQ3R阅读方法详解
- linux mint 13 支持KVM spice
- hdu4307 Matrix 最小割
- 人人旗下风车网产品经理的创业失败教训总结
- linux pstree
- 软考晒晒分—大家一起来!!!
- torque+maui问题-任务不运行
- 基于STSdb和fastJson的磁盘/内存缓存
- 设计模式之单例模式
- 修改VS属性页中的Inherited values
- cocos2d-x-2.1.4 环境搭建问题