poj1273最大流初破
测试都过不了,后来发现犯了一个低级错误!把判断条件放在for(;)!里面和放在for下面大大
不同啊!里面的话,一遇到不符合立即结束了(相当于break)!而下面的可以continue!
dinic算法,每次BFS根据残量网络作层次图,每做一次后DFS找一个增广路(我是到目标点就return,
每次记录该增广路中的最窄边,回溯时按最窄边更新图即可)。
#include<iostream> //16ms 1A
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int inf=0x3f3f3f3f;
int m,n;
struct edge
{int to,f,pre;
};
int mark=0;int minf=inf; //一条增广路最窄的边
int head[201];vector<edge>edges(403);
int vis[201];int level[201];
bool bfs() //层次图,根据残量网络记录与原点的距离(层次)
{for(int i=1;i<=n;i++){vis[i]=level[i]=0;}vis[1]=1;queue<int>q;q.push(1);while(!q.empty()){int cur=q.front();q.pop();for(int i=head[cur];i!=-1;i=edges[i].pre){if(edges[i].f>0&&!vis[edges[i].to]) //放里面{vis[edges[i].to]=1;q.push(edges[i].to);level[edges[i].to]=level[cur]+1;}}}return vis[n]; //访问不到目标地,结束(找不到增广路)
}
void dfs(int cur) //每次找一条增广路
{if(cur==n||mark){mark=1;return;}for(int i=head[cur];i!=-1&&!mark&&minf;i=edges[i].pre) {int v=edges[i].to;int temp=edges[i].f;if(level[v]==level[cur]+1&&temp){int tmin=minf;if(minf>temp)minf=temp;dfs(v);if(mark){edges[i].f-=minf;edges[i^1].f+=minf;}else //非目的地的回溯,minf作为全局变量,要改回来。minf=tmin;}}return ;
}
int main()
{while(~scanf("%d%d",&m,&n)){int s,l,c;memset(head,-1,sizeof(head));for(int i=0;i<2*m;i++){scanf("%d%d%d",&s,&l,&c);edges[i].to=l;edges[i].pre=head[s];head[s]=i;edges[i].f=c;i++;edges[i].to=s;edges[i].pre=head[l];head[l]=i;edges[i].f=0;}long long maxflow=0;while(bfs()){mark=0;minf=inf;dfs(1);maxflow+=minf;}printf("%lld\n",maxflow);}
}
转载于:https://www.cnblogs.com/yezekun/p/3925747.html
poj1273最大流初破相关推荐
- poj1273 最大流
用的是EdmondsKarp 程序可以再优化的,懒得优化了 EdmondsKarp #include <iostream> #include<stdio.h> #include ...
- java非阻塞io流_阻塞式和非阻塞io流初认识
1 什么是阻塞式和非阻塞式? 阻塞式IO:IO即input/output,阻塞式IO指的是"一旦输入/输出工作没有完成,则程序阻塞,直到输入/输出工作完成".在目前,我们从书本上 ...
- 实测百度如流:精致又豪横! AI协同办公应有的样貌
蓄力一纪,可以远矣. 古人称12年为一纪.当一款深藏修炼了12年,也就是一纪的互联网产品正式对外公测,是怎样一种体验? 单拿时长来看,如同互联网活化石一般存在,在整个圈子里堪称传奇. 就在近日,百度贡 ...
- Java基础学习笔记(十六)—— Sream流
Sream流 1 Stream流初体验 2 Stream流概述 3 生成Stream流 4 中间操作方法 5 终结操作方法 6 收集操作方法 7 Stream流案例 1 Stream流初体验 案例需求 ...
- 【渝粤题库】陕西师范大学300005 中国历史文选
<中国历史文选>作业 一.解释下列句子中黑体加线的字或词 1.三月丙午,入曹.数之,以其不用僖负羁而乘轩者三百人也,且曰:"献状." 2.微楚之惠不及此,退三舍辟之,所 ...
- HTML写一首简单的居中唐诗,韩愈写的诗最简单的10篇
韩愈是古文运动的倡导者,主张继承先秦两汉散文传统,反对专讲声律对仗而忽视内容的骈体文.韩愈文章气势雄伟,说理透彻,逻辑性强,被尊为"唐宋八大家"之首.时人有"韩文&quo ...
- 李清照词全集,共49首,有百家评说,附 txt 文本下载,就在本帖的附件中。
李清照词全集,共49首,有百家评说,附 txt 文本下载,就在本帖的附件中. 李清照(1084-约1151年):南宋女词人.号易安居士,齐州章丘(今属山东)人.父李格非为当时著名学者,夫赵明诚为金石考 ...
- 宋词欣赏 -- 李清照词全集
远方在呼唤 如梦令 常记溪亭日暮,沉醉不知归路. 兴尽晚回舟,误入藕花深处. 争渡,争渡,惊起一滩鸥鹭. 如梦令 昨夜雨疏风骤,浓睡不消残酒. 试问卷帘人,却道海棠依旧. 知否?知否?应是绿肥红瘦. ...
- ElasticsearchTemplate的详细使用,完成多条件查询、匹配度查询 . . .
ElasticsearchTemplate是Spring对ES的java api进行的封装,提供了大量的相关的类来完成各种各样的查询.在日常的使用中,应该说最常用的查询就是queryList方法. p ...
- SpringBoot Elasticsearch
文章目录 Windwos Elasticsearch Elasticsearch 基本介绍 Elasticsearch 6.8.5 单机安装 kibana6.8.5 可视化工具 Springboot ...
最新文章
- 全球通信云市场爆发增长,RTC 技术普惠还有多远
- sql2000数据库置疑
- Linux常用的基本命令01
- inet_aton和inet_network和inet_addr三者比较-《别怕Linux编程》之五
- Makefile的重建与include指令
- php的socket通信
- Map的并发处理(ConcurrentHashMap)
- java比较时间sql_如何正确比较日期 java.sql.Date
- 在.NET3.5平台上使用LinQ to SQL + NBear 创建三层WEB应用
- 前端学习(2776):组件的生命周期和过程
- OpenTelemetry-可观察性的新时代
- 超好看倒计时特效单页html模板源码下载
- windows tcp端口占满_TCP与UDP分析、三次握手四次断开、DDOS
- Linux 字符集 en_us,Linux语言环境:en_US.UTF-8 vs en_US
- 如何在打开谷歌的时候强制跳转google.com
- 【DBN预测】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
- 2021-11-01 讲题题解
- python编程自然数表达式_实现四则运算 (python实现)by 周乃君 张宏根
- Win10红警如何关闭3d加速?
- 2021 年第一个双月总结