摘要: 刘汝佳新书--训练指南题意:给定一个有向网络,每条边均有一个容量。问是否存在一个从点1到点N,流量为C的流。如果不存在,是否可以恰好修改一条弧的容量,使得存在这样的流?分析:先求一次最大流,如果流量至少为C,则直接输出possible,否则需要修改的弧一定是最小割里的弧。依次把这些弧的容量增加到C,然后再求最大流,看最大流量是否至少为C即可。很可惜,这样写出来的程序会超时,还需要加两个重要的优化。第一个优化是求完最大流后把流量留着,以后每次在它的基础上增广,第二个优化是每次没必要求出最大流,增广到流量至少为C时就停下来。// File Name: dinic.cpp// Author: zlb 阅读全文
posted @ 2013-03-02 23:19 z.arbitrary 阅读(859) 评论(0) 推荐(0) 编辑
摘要: struct Edge{ int from,to,cap,flow;};bool cmp(const Edge& a,const Edge& b){ return a.from edges; vector G[MAXN]; bool vis[MAXN]; int d[MAXN]; int cur[MAXN]; void init(int n){ this->n=n; for(int i=0;i Q; Q.push(s); d[s]=0; vis[s]=1; while... 阅读全文
posted @ 2013-03-02 23:04 z.arbitrary 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 就是一个裸的最大流来当模版用也不错// File Name: 1273.cpp// Author: zlbing// Created Time: 2013/3/2 22:01:59#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define CL(x,v); memset(x,v,sizeof(x));#define INF 0x3f3f3f3f#define LL long long#define MAXN 阅读全文
posted @ 2013-03-02 23:03 z.arbitrary 阅读(159) 评论(0) 推荐(0) 编辑