https://www.luogu.org/problem/P3356
题意:q∗pq*pq∗p的网格,有障碍/平坦地面/岩石标本,求从左上角到右下角最多运送车辆的情况下,运送的石子数最多,输出车辆走的路径。
思路:35*35的图很小,拆点建图,有石子的一条边容量为1,费用-1,另一条容量INF,费用0.
最后的输出答案跑n遍dfs,每次沿着flow>0的边走到终点,并把路径上所有的边flow-1.

#include<bits/stdc++.h>
using namespace std;
const int maxn=2000*2+100;
const int INF=0x3f3f3f3f;
typedef long long ll;struct Edge{int from,to,cap,flow,cost;
};struct MCMF{int c,r;int n,m,s,t;vector<Edge> edges;vector<int> G[maxn];int inq[maxn];ll d[maxn];int p[maxn];int a[maxn];void init(){int x;cin>>n>>c>>r;s=c*r*2,t=s+1;for(int i=0;i<r;i++)for(int j=0;j<c;j++){scanf("%d",&x);int from=(i*c+j)*2,to=from+1;if(x==2)AddEdge(from,to,1,-1),AddEdge(from,to,INF,0);else if(x==0)AddEdge(from,to,INF,0);}AddEdge(s,0,n,0);AddEdge(s-1,t,INF,0);for(int i=0;i<r;i++)for(int j=0;j<c;j++){int from=(i*c+j)*2+1,to1=from+1,to2=((i+1)*c+j)*2;if(j!=c-1)AddEdge(from,to1,INF,0);if(i!=r-1)AddEdge(from,to2,INF,0);}}void AddEdge(int from,int to,int cap,int cost){edges.push_back((Edge){from,to,cap,0,cost});edges.push_back((Edge){to,from,0,0,-cost});m=edges.size();G[from].push_back(m-2);G[to].push_back(m-1);}bool BellmanFord(ll& flow,ll& cost){for(int i=0;i<=t;i++)d[i]=(1LL<<50);memset(inq,0,sizeof(inq));d[s]=0;inq[s]=1;p[s]=0;a[s]=INF;queue<int> Q;Q.push(s);while(!Q.empty()){int u=Q.front();Q.pop();inq[u]=0;for(int i=0;i<G[u].size();i++){Edge& e=edges[G[u][i]];if(e.cap>e.flow && d[e.to]>d[u]+e.cost){d[e.to]=d[u]+e.cost;p[e.to]=G[u][i];a[e.to]=min(a[u],e.cap-e.flow);if(inq[e.to]==0){inq[e.to]=1;Q.push(e.to);}}}} if(d[t]==(1LL<<50))return false;a[t]=1;flow+=a[t];cost+=a[t]*d[t];int u=t;while(u!=s){edges[p[u]].flow+=a[t];edges[p[u]^1].flow-=a[t];u=edges[p[u]].from;}return true;}ll Mincost(){ll flow=0,cost=0;while(BellmanFord(flow,cost));return cost;}void dfs(int node,int u){  if(node==t)return;for(int i=0;i<G[u].size();i++){Edge& e=edges[G[u][i]];if(e.flow>=1){e.flow--;if(e.from/2!=e.to/2 && e.from!=s && e.to!=t)printf("%d %d\n",node,e.to==e.from+1?1:0);dfs(node,e.to);break;}}}void print(){for(int i=1;i<=n;i++)dfs(i,s);}
}ans;int main()
{//freopen("input.in","r",stdin);ans.init();ans.Mincost();ans.print();return 0;
}

【网络流24题-23】洛谷P3356 火星探险问题相关推荐

  1. 洛谷 - P3356 火星探险问题(最大费用最大流+拆点+路径打印)

    题目链接:点击查看 题目大意:给出一个n*m的矩阵,每个点都有一个数字: 0:平坦无障碍 1:障碍 2:石块 现在在点(1,1)处有k个探测车,他们都要去往点(n,m)处,探测车只能向下或向右行驶,现 ...

  2. 洛谷——网络流24题

    P2756 飞行员配对方案问题 P2762 太空飞行计划问题 P4014 分配问题 P2774 方格取数问题 P4009 汽车加油行驶问题 P4015 运输问题 P3254 圆桌问题 P2763 试题 ...

  3. 【网络流24题】餐巾计划问题(最小费用最大流)

    [网络流24题]餐巾计划问题(最小费用最大流) 题面 COGS 洛谷上的数据范围更大,而且要开longlong 题解 餐巾的来源分为两种: ①新买的 ②旧的拿去洗 所以,两种情况分别建图 先考虑第一种 ...

  4. 「网络流24题」 题目列表

    「网络流24题」 题目列表 序号 题目标题 模型 题解 1 飞行员配对方案问题 二分图最大匹配 <1> 2 太空飞行计划问题 最大权闭合子图 <2> 3 最小路径覆盖问题 二分 ...

  5. 软件补丁问题(网络流24题)

    洛谷题目链接:软件补丁问题 题目背景 none! 题目描述 T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软 ...

  6. 【算法】【网络流24题】巨坑待填(成功TJ,有时间再填)

    ------------------------------------------------------------------------------------ 17/24 --------- ...

  7. 题解 【网络流24题】太空飞行计划

    [网络流24题]太空飞行计划 Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,- ...

  8. cwl的网络流24题练习

    网络流24题 编号 题目 备注 1 飞行员配对方案问题 二分图最大匹配,可最大流解决 2 太空飞行计划问题   3 最小路径覆盖问题  有向图最小路径覆盖,解法都写题目上了 4 魔术球问题  有向图最 ...

  9. 解题报告:线性规划与网络流24题

    目录 A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] C.最小路径覆盖问题(有向无环图最小路 ...

  10. [网络流24题] 最长递增子序列

    [网络流24题] 最长递增子序列 «问题描述: 给定正整数序列x1,..., xn. (1)计算其最长递增子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的递增子序列. (3)如果允 ...

最新文章

  1. 另类×××应用(三):不花一分钱,实现总部和多分支机构网络互联
  2. ORDNet:为场景分割捕获全范围依赖关系
  3. 6.没有Release文件。N:无法安全地用该源进行更新,所以默认禁用该源解决
  4. vector 源码及使用
  5. 保证主题,JMS规范和ActiveMQ的消息传递
  6. vue中 vue-router的路由的2种模式 (原生js模拟演示)
  7. 详解nullable、firstpos、lastpos和followpos的计算规则
  8. 渲染完毕再渲染数据_三星Galaxy S21渲染图再曝:多种配色、新设计
  9. [转载].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
  10. selenium浏览器操作以及对象定位
  11. 华为交换机初始化_华为S5700交换机初始化和配置TELNET远程登录
  12. 微信小程序调查问卷避坑
  13. html移动的导航菜单,移动导航菜单设计和教程
  14. 【董天一】什么是IPFS(三)
  15. Duplicate entry '127' for key 'PRIMARY'
  16. 定理在数学中的简写形式_高中数学联赛常用定理
  17. 记一次天地图https无法访问
  18. java新手工资一般多少?java程序员的薪资是多少呢?
  19. Filter基础知识
  20. SAP -QM主数据

热门文章

  1. 统计员工业绩app_一哥管家(员工绩效统计)app手机下载-一哥管家(员工绩效统计)安卓最新版下载1.0.8-闪电下载网...
  2. 下载blob地址或m3u8格式视频方法以及常见问题解决
  3. 对大学计算机课程的认识 感想,大学计算机基础学习感想复习课程.pdf
  4. 北京交通大学计算机学院复试名单,北京交通大学计算机与信息技术学院考研复试分数线复试通知复试名单...
  5. linux下替代windows的软件列表
  6. 杭州最新公交线路一览(91-100)
  7. 使用whistle实现移动网页(H5、公众号、企微应用)的本地开发及调试
  8. 想法随笔——知乎段子
  9. navicat for mysql 10.1.7下载破解(2017.12.30)
  10. 美化版缤纷彩色文字广告代码文字+网站添加AD教程