洛谷 P2774 方格取数问题【最小割】
2018-02-08 11:19
288 查看
因为都是正整数,所以当然取得越多越好。先把所有点权加起来,黑白染色后,s向所有黑点连流量为点权的边,所有白点向t连流量为点权的边,然后黑点向相邻的四个白点连流量为inf的边,表示不可割,这样一来,对于一条链上的s->u->v->t,只能割掉u的点权或者v的点权,那么最小割就是用最小的代价是st分开,也就是选择点权和最小的点集合使得图合法。答案是sum-dinic
!:只用把黑点向相邻点连inf即可,白点不用
#include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std; const int N=100005,inf=1e9; int m,n,h ,cnt=1,le ,sum,s,t; struct qwe { int ne,to,va; }e[N*20]; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } void add(int u,int v,int w) { cnt++; e[cnt].ne=h[u]; e[cnt].to=v; e[cnt].va=w; h[u]=cnt; } void ins(int u,int v,int w) { add(u,v,w); add(v,u,0); } bool bfs() { queue<int>q; memset(le,0,sizeof(le)); le[s]=1; q.push(s); while(!q.empty()) { int u=q.front(); q.pop(); for(int i=h[u];i;i=e[i].ne) if(e[i].va>0&&!le[e[i].to]) { le[e[i].to]=le[u]+1; q.push(e[i].to); } } return le[t]; } int dfs(int u,int f) { if(u==t||f==0) return f; int us=0; for(int i=h[u];i&&us<f;i=e[i].ne) if(e[i].va>0&&le[e[i].to]==le[u]+1) { int t=dfs(e[i].to,min(e[i].va,f-us)); e[i].va-=t; e[i^1].va+=t; us+=t; } if(!us) le[u]=0; return us; } int dinic() { int re=0; while(bfs()) re+=dfs(s,inf); return re; } int main() { m=read(),n=read(); s=0,t=n*m+1; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) { int x=read(),id=(i-1)*n+j; sum+=x; if((i+j)%2==1) { ins(s,id,x); if(i!=1) ins(id,id-n,inf); if(i!=m) ins(id,id+n,inf); if(j!=1) ins(id,id-1,inf); if(j!=n) ins(id,id+1,inf); } else ins(id,t,x); } printf("%d\n",sum-dinic()); return 0; }
相关文章推荐
- 洛谷P2774 方格取数问题(最小割)
- 洛谷P2774 方格取数问题 BZOJ 1143祭祀river【二分图最大独立集】
- 洛谷P2774:方格取数问题
- 洛谷 P2774 方格取数问题
- 洛谷 P2764 LibreOJ 6002 最小路径覆盖问题
- 洛谷 P2764 最小路径覆盖问题【网络流||二分图匹配】
- 最小割的应用--方格取数问题(HDU 1565,HDU 1569)
- 洛谷2764:[网络流24题]最小路径覆盖问题——题解
- AC日记——最小路径覆盖问题 洛谷 P2764
- 洛谷P2774方格取数(网络流24题)
- [题解] [网络流二十四题(九)] 方格取数问题(最小割)
- 洛谷P2764:最小路径覆盖问题
- 洛谷.3355.骑士共存问题(最小割ISAP)
- [网络流24题] 方格取数问题 (最大权独立集---网络最小割)
- 网络流24题(09)方格取数问题(最大点权独立集 + 最小割最大流)
- 洛谷 P3355 骑士共存问题【最小割】
- 【洛谷】方格取数问题-网络流
- P2774 方格取数问题
- 洛谷2774:[网络流24题]方格取数问题——题解
- 洛谷 P2762 太空飞行计划问题 【最大权闭合子图+最小割】