网络流第一题!!!BZOJ1001
歇逼了一晚上,懵懵懂懂的懂了Dinic算法
大概是一遍BFS+DFS,还不是很懂,明天继续看!!!
- #include<iostream>
- #include<stdio.h>
- #include<string.h>
- #include<algorithm>
- #include<queue>
- using namespace std;
- const int maxn = ;
- const int inf = 0x3f3f3f3f;
- struct edge{
- int to,next,w;
- }e[maxn<<];
- int n,m,cnt=;
- int head[maxn];
- int ans;
- int d[maxn];
- void link(int u,int v,int w){//建立双向边
- e[++cnt]=(edge){v,head[u],w};head[u]=cnt;
- e[++cnt]=(edge){u,head[v],w};head[v]=cnt;
- }
- bool bfs(){
- memset(d,-,sizeof(d));
- queue<int> q;q.push();d[]=;
- while(!q.empty()){
- int x=q.front();
- q.pop();
- for (int i=head[x];i;i=e[i].next){
- if (e[i].w && d[e[i].to]<){
- q.push(e[i].to);
- d[e[i].to]=d[x]+;
- }
- }
- }
- return d[n*m]< ? :;
- }
- int dfs(int x,int f){
- if (x==n*m || f==)return f;
- int w,used=;
- for (int i=head[x];i;i=e[i].next)if (e[i].w && d[e[i].to]==d[x]+) {
- w=dfs(e[i].to,min(f-used,e[i].w));
- e[i].w-=w;
- e[i^].w+=w;
- used+=w;
- if (used==f)return f;
- }
- if (!used)d[x]=-;
- return used;
- }
- void Dinic(int s){
- while(bfs())ans+=dfs(s,inf);
- }
- int main(){
- int x;
- scanf("%d%d",&n,&m);
- for (int i=;i<=n;i++){
- for (int j=;j<m;j++){
- scanf("%d",&x);
- link(m*(i-)+j,m*(i-)+j+,x);//求出边权连接的左右两个点
- }
- }
- for (int i=;i<n;i++){
- for (int j=;j<=m;j++){
- scanf("%d",&x);
- link(m*(i-)+j,m*i+j,x);//求出边权连接的上下两个点
- }
- }
- for (int i=;i<n;i++){
- for (int j=;j<m;j++){
- scanf("%d",&x);
- link(m*(i-)+j,m*i+j+,x);//斜边上两个点
- }
- }
- Dinic();
- printf("%d",ans);
- return ;
- }
网络流第一题!!!BZOJ1001的更多相关文章
- POJ 1293 网络流 第一题
完全的模板,做多了就好了吧 反向流量真的很有意思,有这样一种说法比较容易理解.”正向是+,反向就是-,其实是等价的.因为每次找到的增广路不一定是最优解里面的,所以再进行后面的操作的时候要重新选择,而反 ...
- 【网络流24题】No.1 搭配飞行员(飞行员配对方案问题)
[问题描述] 飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员.由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞 ...
- LibreOJ 6003. 「网络流 24 题」魔术球 贪心或者最小路径覆盖
6003. 「网络流 24 题」魔术球 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数据 ...
- LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图
#6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...
- 【刷题】LOJ 6227 「网络流 24 题」最长k可重线段集问题
题目描述 给定平面 \(\text{xoy}\) 上 \(n\) 个开线段组成的集合 \(\text{I}\) ,和一个正整数 \(k\) ,试设计一个算法. 从开线段集合 \(\text{I}\) ...
- 【刷题】LOJ 6121 「网络流 24 题」孤岛营救问题
题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形 ...
- Libre 6010「网络流 24 题」数字梯形 (网络流,最大费用最大流)
Libre 6010「网络流 24 题」数字梯形 (网络流,最大费用最大流) Description 给定一个由n 行数字组成的数字梯形如下图所示.梯形的第一行有m 个数字.从梯形的顶部的m 个数字开 ...
- Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流)
Libre 6008 「网络流 24 题」餐巾计划 (网络流,最小费用最大流) Description 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. ...
- Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流)
Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流) Description 问题描述: 给定正整数序列x1,...,xn . (1 ...
随机推荐
- 【爬坑】DataNode 无法正常启动解决方案
0. 说明 DataNode 无法正常启动的原因 & 解决方案 1. 原因一 在 start-all.sh 之后 DataNode 无法正常启动,单独启动也启动不了 可能的原因 多次格式化,导 ...
- 谈谈程序猿求职简历的STAR法则
最近Android/IOS的市场都有点躁动,前两天看业内几位大牛写的关于求职招聘的文章,觉得说的很有道理,暂且吸收进来,同时讲一下简历面试中使用STAR法则.我们在写简历或者面试时,最主要的一个目的, ...
- Centos7防火墙快速开放端口配置方法
▲这篇文章主要为大家详细介绍了Centos7防火墙开放端口的快速方法,感兴趣的小伙伴们可以参考一下! Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选 ...
- 如何以SYSTEM用户运行CMD
有的时候有些文件在管理员账户不能删除,这个时候需要在SYSTEM用户下删除. 可以通过以SYSTEM权限运行CMD来删除某些文件或目录的目的. 1. 从微软网站下载PSTool. 2. 以管理员运行C ...
- Alpha冲刺! Day1 - 磨刀
Alpha冲刺! Day1 - 磨刀 序章 Alpha冲刺开始的比印象中的计划早,翻回去看系统设计那篇作业博客的实践时间安排表格发现不!见!了!! 因为计划提前,但又必须在编码开始之前把所有逻辑讨论清 ...
- MySQL视图 索引 存储过程 触发器 函数
视图: 也就是一个虚拟表(不是真实存在的),它的本质就是根据SQL语句获取动态的数据集,并为其命名.用户使用时只需要使用命名的视图即可获取结果集,并可以当做表来使用.它的作用就是方便查询操作,减 ...
- Intent加强
Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意 ...
- [笔记]后缀数组SA
参考资料这次是真抄的: 1.后缀数组详解 2.后缀数组-学习笔记 3.后缀数组--处理字符串的有力工具 定义 \(SA\)排名为\(i\)的后缀的位置 \(rk\)位置为\(i\)的后缀的排名 \(t ...
- EXCEL 偶数、奇数行分开求和公式
例举 : A1行是 123 A2行是 321 A3行是 456 A4行是 789我是加的是A1+A3得出的和还有加的是A2+A4得出的和因为要A1+A3一直加到A601,我用很笨的方式像这样子一个个加 ...
- 树莓派3b安装Apache2+PHP+MySQL+phpyadmin
树莓派型号:3B+ 系统环境:2017-04-10-raspbian-jessie 先更新一下源 BASIC sudo apt-get update 安装Apache2 BASIC sudo apt- ...