BZOJ 1001 狼抓兔子
2017-03-14 19:28
211 查看
跑得好慢啊,第一次交5000ms+,第二次3000ms+
还没直接跑最大流快?
这题应该是因为SPFA的上界低,但是网络流的下界低
就酱
还没直接跑最大流快?
这题应该是因为SPFA的上界低,但是网络流的下界低
就酱
#include<cstdio> #include<queue> #include<vector> #define C (c=getchar()) using namespace std; struct Edge{ int to,v; }; vector<Edge>e[2*1001*1001]; queue<int>Q; int n,m,s,t,dis[2*1001*1001],vis[2*1001*1001]; void add(int x,int y,int v){e[x].push_back((Edge){y,v});} inline void read(int &a) { static char c;a=0;C; while(c<'0'||c>'9')C; while(c>='0'&&c<='9')a=a*10+c-'0',C; } inline void swap(int &a,int &b){int t=a;a=b;b=t;} int main() { read(n),read(m); int x,y,v,i,j; s=0,t=2*(n-1)*(m-1)+1; if(n==1||m==1) { int ans=2e8; if(n<m)swap(n,m); for(i=1;i<=n-1;++i){scanf("%d",&v);if(v<ans)ans=v;} printf("%d",ans); return 0; } for(i=1;i<=m-1;++i) { read(v); y=i*2-1; add(s,y,v),add(y,s,v); } for(i=1;i<n-1;++i) for(j=1;j<m;++j) { read(v); x=((i-1)*(m-1)+j)*2,y=2*(i*(m-1)+j)-1; add(x,y,v),add(y,x,v); } for(i=1;i<m;++i) { read(v); x=2*((n-2)*(m-1)+i); add(x,t,v),add(t,x,v); } for(i=1;i<=n-1;++i) for(j=1;j<=m;++j) { read(v); if(j==1) { x=((i-1)*(m-1))*2+2; add(x,t,v),add(t,x,v); } else if(j==m) { x=(i*(m-1))*2-1; add(s,x,v),add(x,s,v); } else { x=((i-1)*(m-1)+j-1)*2-1; y=((i-1)*(m-1)+j)*2; add(x,y,v),add(y,x,v); } } for(i=1;i<=n-1;++i) for(j=1;j<=m-1;++j) { read(v); x=2*((i-1)*(m-1)+j)-1; y=2*((i-1)*(m-1)+j); add(x,y,v),add(y,x,v); } for(i=0;i<=t;++i) dis[i]=2e8; dis[s]=0,vis[s]=1,Q.push(s); while(!Q.empty()) { int u=Q.front();Q.pop(); vis[u]=0; for(int i=0;i<e[u].size();++i) { Edge x=e[u][i]; if(dis[u]+x.v<dis[x.to]) { dis[x.to]=dis[u]+x.v; if(!vis[x.to]) { Q.push(x.to); vis[x.to]=1; } } } } printf("%d",dis[t]); return 0; }
相关文章推荐
- 【BZOJ1001】【平面图最小割】狼抓兔子
- bzoj1001 [BeiJing2006]狼抓兔子
- bzoj1001 【beijing2006】狼抓兔子
- 【BZOJ1001】狼抓兔子
- BZOJ 1001 [BeiJing2006]狼抓兔子
- 【BJOI2006】bzoj1001 狼抓兔子
- 【最小割+对偶图=最短路】BZOJ1001 [BeiJing2006]狼抓兔子
- bzoj1001狼抓兔子——网络流平面图问题
- bzoj 1001: [BeiJing2006]狼抓兔子 最短路+对偶图
- BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)
- BZOJ1001狼抓兔子
- BZOJ 1001 狼抓兔子(最大流-对偶图最短路)
- [BJOI2006] [BZOJ1001] 狼抓兔子|最大流|最短路
- BZOJ 1001: [BeiJing2006]狼抓兔子
- BZOJ 大视野 1001 狼抓兔子 解题报告
- BZOJ 1001 狼抓兔子
- 【最小割->最短路】BZOJ1001(BeiJing2006)[狼抓兔子]题解
- BZOJ 1001: [BeiJing2006] 狼抓兔子
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]