第一次网络流,学了一天的DINIC算法(个人比较愚),切了这个入门题,开始的时候怎么调连

测试都过不了,后来发现犯了一个低级错误!把判断条件放在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);
}
}

poj1273最大流初破的更多相关文章

  1. POJ1273 最大流模板

    之前自己写的,以后当一个模板的基础吧,不管是最大流,最小割,二分图匹配 下面是POJ1273的一个裸题.. 1 #include <iostream> 2 #include <cst ...

  2. POJ1273 最大流 EK算法

    套了个EK的模板 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdi ...

  3. POJ1273(最大流)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 70451   Accepted: 2739 ...

  4. POJ1273(最大流入门)

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 70333   Accepted: 2733 ...

  5. hdu1532&&poj1273 最大流

    Dinic算法: 层次图:根据源点到该点的距离建图,这里设相邻的都差1. (下面部分转) 在这幅图中我们首先要增广1->2->4->6,这时可以获得一个容量为2的流,但是如果不建立4 ...

  6. iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流

    最近项目中想实现直播的功能,所以研究了一段时间的直播功能,当然也是在别人的基础上不断的学习实现的,所以记录一下,希望对大家有所帮助. 直播拉流功能: 这里使用了开源的IJKPlayer第三框架,ijk ...

  7. 什么是可变参数?如何创建不可变集合?Steam三类方法是什么?获取流方法特点?流中间方法特点?终结流方法特点?

    ==知识梳理== ==重难点梳理== ==今日目标== 1.能够了解什么是可变参数 2.能够了解如何去创建不可变集合 3.能够掌握Stream流的使用 ==知识点== 1.可变参数 2.Stream流 ...

  8. poj2月下旬题解

    poj2388 水题 poj1273 最大流初步 poj2456 简单的二分答案 poj2309 论lowbit的重要性 poj1734 floyd求最小环 poj1001 细节题 poj2184 0 ...

  9. hdu3622 2-sat问题,二分+判断有无解即可。

    /*2-sat问题初破!题意:每一对炸弹只能选一个(明显2-sat),每个炸弹半径自定,爆炸范围不可 相交,求那个最小半径的最大值(每种策略的最小半径不同).思:最优解:必然是选择的点最近 的俩个距离 ...

随机推荐

  1. 【经验总结】关于使用某些第三方插件库元素设置display:none后重新show不显示的问题;(display、opacity、宽高0的使用场景)

    display:none 直接取消元素所占用的位置(但是元素还是存在的),后面元素看他就相当于不存在了: opacity:0  隐藏,但是其依旧占用位置: height.width:0 和displa ...

  2. PMP项目管理学习笔记(12)——范围管理之创建工作分解结构(WBS)

    创建工作分解结构过程是范围管理知识领域中最重要的过程,因为要在此过程明确所要做的全部工作 输入:收集需求和定义范围过程的输出会成为创建工作分解结构过程的输入(需求文档.组织资产过程.项目范围说明书) ...

  3. Redis学习笔记(三)列表进阶

    RPOPLPUSH source destination(弹出source列表最右端的元素,并推入destination的最左端,同时返回这个元素) BRPOPLPUSH source destina ...

  4. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

  5. 15分钟学会使用Git

    http://blog.csdn.net/u013510614/article/details/50588446 主体思想 Git作为一个复杂的版本控制系统,命令之多,相信很多小白已经望而却步,有的尝 ...

  6. WPF知识点全攻略01- WPF相对WinFrom的优缺点

    对比WPF和WinFrom前,先来了解下GUI现阶段在用的其他一些开发技术: MFC:微软基础类库,以C++的形式封装了Windows API,加上一些实用工具类. QT:奇趣科技开发的跨平台C++图 ...

  7. vue-cli中添加使用less

    在vue-cli中构建的项目是可以使用less的,但是查看package.json可以发现,并没有less相关的插件,所以我们需要自行安装. 第一步:安装 npm install less less- ...

  8. 2019天梯赛练习题(L2专项练习)

    7-2 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...

  9. ES搭建

    https://www.cnblogs.com/jstarseven/p/6803054.html

  10. 自定义函数导致的sql性能问题

    同事说,某某报表跑的很慢,让我调查一下 优化前:该报表整体需要跑4小时以上. sql代码如下 SELECT /*省略多数查询字段*/ REP_FUN_REFCODEVALUE /*自定义函数*/ (P ...