codevs1907 方格取数 3||tyvj1338QQ农场|网络流
来源:互联网 发布:万顺天国知乎 编辑:程序博客网 时间:2024/05/21 10:39
自己做出来的第一道最小割的题
我是不是太弱了QAQ
题解:
把矛盾的点分为两排
然后随便连连边就好了
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<queue>#include<vector>#include<set>#include<map>#include<algorithm>#include<iostream>#define T 400040#define mx 122222222using namespace std;int sc(){int i=0; char c=getchar();while(c>'9'||c<'0')c=getchar();while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar();return i;}int dis[T],q[T];int id[202][202],col[202][202],v[202][202];int head[T],nxt[T*16],lst[T*16],c[T*16];int cnt,n,m,ans,sum,tot=1;int S,E;void add(int x,int y,int z){if(!x||!y)return;lst[++tot]=y;c[tot]=z;nxt[tot]=head[x];head[x]=tot;}void insert(int x,int y,int z){add(x,y,z);add(y,x,0);}bool bfs(){for(int i=1;i<=E;i++)dis[i]=0;dis[S]=1;int l=1,r=2; q[1]=S;while(l<r){int x=q[l++];for(int i=head[x];i;i=nxt[i]) if(c[i]&&!dis[lst[i]]) { dis[lst[i]]=dis[x]+1; q[r++]=lst[i]; }}return dis[E];}int dfs(int x,int f){if(x==E)return f;int ww=0,w;for(int i=head[x];i;i=nxt[i]) if(c[i]&&dis[lst[i]]==dis[x]+1) { w=dfs(lst[i],min(f-ww,c[i])); ww+=w;c[i]-=w,c[i^1]+=w; if(ww==f)return ww; }if(ww==0)dis[x]=0;return ww;}int main(){n=sc();m=sc();for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){id[i][j]=++cnt,v[i][j]=sc(),sum+=v[i][j];col[i][j]=i+j&1;}S=n*m+1,E=S+1; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(col[i][j]){insert(S,id[i][j],v[i][j]);insert(id[i][j],id[i-1][j],mx);insert(id[i][j],id[i][j-1],mx); insert(id[i][j],id[i][j+1],mx);insert(id[i][j],id[i+1][j],mx); } else insert(id[i][j],E,v[i][j]); }while(bfs()) sum-=dfs(S,mx);cout << sum;return 0;}
0 0
- codevs1907 方格取数 3||tyvj1338QQ农场|网络流
- 【codevs1907】[网络流24题]方格取数3
- CodeVS1907 方格取数3
- [网络流24题][CODEVS1907]方格取数3(最小割)
- codevs1907方格取数最大流
- [codevs1907]方格取数3 最小割
- 【codevs1907】方格取数3 最大点权独立集
- [CODEVS1907]方格取数3(最小割)
- 【codevs1907】【方格取数3】二分图最大带权独立集
- HDU1565 方格取数(1)网络流
- HDU1569 方格取数(2) 网络流
- HDU1565 方格取数(1) 网络流
- codevs 1227 方格取数 网络流
- BZOJ_P1475 方格取数(网络流)
- 【BZOJ1475】【网络流】方格取数 题解
- codevs 1907 方格取数 网络流
- [网络流][最大点权独立集] 方格取数
- HDU-1565 方格取数(1) 网络流
- C语言获取时间函数
- CSS3 2D和3D转换(transform)
- 音视频ES,PES,PS,TS介绍
- 输入两个数,求最大公约数和最小公倍数
- java中的匿名内部类总结
- codevs1907 方格取数 3||tyvj1338QQ农场|网络流
- HDOJ 1272 小希的迷宫
- 如何使用http或httpClient向服务器上传图片 以及使用http上传图片时协议的描述
- 学习JS的这些日子——十二月总结
- tyvj /noi 2010 能量采集
- Handler研究
- 【PHP进阶篇】3.类与面向对象--慕课网【学习总结】
- 流行学习
- JS特效文字逐个显示