hz2016评测《《点击跳转 其实前面还有一题A+B的你们想看的话私聊吧。 我这题一看,嗯,网络流,一看建图两个for,好,开打。 这题主要还是建图吧,网络流只是模版而已。 最近风格改了很多,适应一下吧。#include<map> #include<queue> #include<cmath> #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define qread(x) x=read() #define mes(x,y) memset(x,y,sizeof(x)) #define mpy(x,y) memcpy(x,y,sizeof(x)) #define Maxn 1000 #define INF 2147483647 inline int read(){ char ch=getchar(); int f=1,x=0; while(!(ch>='0'&&ch<='9')){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+(ch-'0');ch=getchar();} return x*f; } int n,m,ans; struct Edge{ int x,y,c,next,other; }E[2*3*Maxn*Maxn+1];int len,first[Maxn*Maxn+1]; int getp(int i,int j){ return (i-1)*m+j; } void ins(int x,int y,int c){ len++; E[len].x=x;E[len].y=y;E[len].c=c; E[len].other=len+1; E[len].next=first[x];first[x]=len; len++; E[len].x=y;E[len].y=x;E[len].c=c; E[len].other=len-1; E[len].next=first[y];first[y]=len; } int st,ed,h[Maxn*Maxn+1]; bool v[Maxn*Maxn+1]; std::queue<int>q; bool bt(){ q.push(st); mes(h,0);h[st]=1; mes(v,false);v[st]=true; while(q.empty()==false){ int x=q.front(); for(int k=first[x];k>0;k=E[k].next){ int y=E[k].y; if(h[y]==0&&E[k].c>0){ h[y]=h[x]+1; if(v[y]==false){ v[y]=true; q.push(y); } } } v[x]=false; q.pop(); } if(h[ed]>0)return true; else return false; } int findflow(int x,int f){ if(x==ed)return f; int s=0,tmp; for(int k=first[x];k>0;k=E[k].next){ int y=E[k].y; if(E[k].c>0&&h[y]==h[x]+1&&s<f){ tmp=findflow(y,std::min(E[k].c,f-s)); s+=tmp; E[k].c-=tmp;E[E[k].other].c+=tmp; } } if(s==0)h[x]=0; return s; } int main(){ qread(n);qread(m); len=0;mes(first,0); int pi,pj,pc; for(int i=1;i<=n;i++){ for(int j=1;j<m;j++){ qread(pc); pi=getp(i,j); pj=getp(i,j+1); ins(pi,pj,pc); } } for(int i=1;i<n;i++){ for(int j=1;j<=m;j++){ qread(pc); pi=getp(i,j); pj=getp(i+1,j); ins(pi,pj,pc); } } for(int i=1;i<n;i++){ for(int j=1;j<m;j++){ qread(pc); pi=getp(i,j); pj=getp(i+1,j+1); ins(pi,pj,pc); } } ans=0; st=getp(1,1);ed=getp(n,m); while(bt()==true){ ans+=findflow(st,INF); } printf("%d\n",ans); }
查看原文:http://hz2016.tk/blog/?p=55
[BeiJing2006]狼抓兔子
最新推荐文章于 2021-08-02 20:58:50 发布