【最短路】BZOJ1001狼抓兔子
来源:互联网 发布:我做淘宝创业5年失败了 编辑:程序博客网 时间:2024/06/05 15:14
题目描述:(略)
分析:
平面图中的最小割=其对偶图的最短路
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#define SF scanf#define PF printfusing namespace std;void Read(int &x){ char c; bool flag=0; while(c=getchar(),c!=EOF&&(c<'0'||c>'9')&&c!='-'); if(c=='-') flag=1; else x=c-'0'; while(c=getchar(),c!=EOF&&c>='0'&&c<='9') x=x*10+c-'0'; if(flag==1) x=-x;}#define MAXN 1010vector<int> a[2*MAXN*MAXN],w[2*MAXN*MAXN];int n,m,cnt;int num[MAXN][MAXN][2],vis[2*MAXN*MAXN],ans;bool used[2*MAXN*MAXN];queue<int>q;void spfa(){ q.push(0); vis[0]=0; while(!q.empty()){ int x=q.front(); q.pop(); used[x]=0; for(int i=0;i<a[x].size();i++){ if(vis[a[x][i]]<vis[x]+w[x][i]&&vis[a[x][i]]!=-1) continue; vis[a[x][i]]=vis[x]+w[x][i]; if(used[a[x][i]]==0){ q.push(a[x][i]); used[a[x][i]]=1; } } }}int main(){ memset(vis,-1,sizeof vis); Read(n),Read(m); if(n==1||m==1){ if(n>m) swap(n,m); int ans=-1; int x; for(int i=1;i<m;i++){ Read(x); if(ans==-1||ans>x) ans=x; } PF("%d\n",ans); return 0; } for(int i=1;i<n;i++) for(int j=1;j<m;j++){ num[i][j][0]=++cnt; num[i][j][1]=++cnt; } for(int i=1;i<=n;i++){ num[i][0][1]=cnt+1; num[i][0][0]=cnt+1; } for(int i=1;i<=m;i++){ num[n][i][0]=cnt+1; num[n][i][1]=cnt+1; } int x; for(int i=1;i<=n;i++) for(int j=1;j<m;j++){ Read(x); a[num[i][j][0]].push_back(num[i-1][j][1]); w[num[i][j][0]].push_back(x); a[num[i-1][j][1]].push_back(num[i][j][0]); w[num[i-1][j][1]].push_back(x); } for(int i=1;i<n;i++) for(int j=1;j<=m;j++){ Read(x); a[num[i][j][1]].push_back(num[i][j-1][0]); w[num[i][j][1]].push_back(x); a[num[i][j-1][0]].push_back(num[i][j][1]); w[num[i][j-1][0]].push_back(x); } for(int i=1;i<n;i++) for(int j=1;j<m;j++){ Read(x); a[num[i][j][0]].push_back(num[i][j][1]); w[num[i][j][0]].push_back(x); a[num[i][j][1]].push_back(num[i][j][0]); w[num[i][j][1]].push_back(x); } spfa(); PF("%d",vis[cnt+1]);}
阅读全文
0 0
- 【最短路】BZOJ1001狼抓兔子
- [平面图转最短路]BZOJ1001:[BeiJing2006]狼抓兔子
- 【最小割->最短路】BZOJ1001(BeiJing2006)[狼抓兔子]题解
- BZOJ1001(狼抓兔子)
- 【BZOJ1001】狼抓兔子
- BZoj1001狼抓兔子
- 【bzoj1001】【狼抓兔子】
- BZOJ1001狼抓兔子
- [bzoj1001]狼抓兔子
- 【BZOJ1001】狼抓兔子
- BZOJ1001狼抓兔子
- 【BZOJ1001】【Beijing2006】狼抓兔子(平面图转对偶图:最小割+最短路)
- 【BZOJ1001】[BeiJing2006]狼抓兔子【最小割】【最短路】【对偶图】
- [最小割+对偶建图+最短路] BZOJ1001: [BeiJing2006]狼抓兔子
- 【最小割+对偶图=最短路】BZOJ1001 [BeiJing2006]狼抓兔子
- bzoj1001 [BeiJing2006]狼抓兔子(网络流dinic算法||最短路spfa)
- 狼抓兔子 BZOJ1001 平面图最小割转对偶图最短路
- bzoj1001 [BeiJing2006]狼抓兔子(最小割/平面图最大流转对偶图最短路)
- 图像像素访问
- ssh免密登陆
- 【VSCode】Windows下VSCode编译调试c/c++【更新】
- bzoj 1687: [Usaco2005 Open]Navigating the City 城市交通(BFS)
- 设计模式C++实现(1)——工厂模式
- 【最短路】BZOJ1001狼抓兔子
- js显示json里面的内容
- redis 如何查看版本
- SGISTL源码探究-STL中的算法(前言)
- bzoj1010 [HNOI2008]玩具装箱toy(斜率优化DP)
- 【运维分享】全方位管理你的小机
- Mybatis 异常: java.util.ArrayList and java.lang.String
- 配置yum源aliyun
- (1)JavaWeb学习总结之列表Excel下载