码迷,mamicode.com
首页 > 其他好文 > 详细

[日常摸鱼]最大流

时间:2018-02-05 23:16:25      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:include   tps   printf   bool   忘记   while   dinic   span   color   

luogu2740[USACO4.2]Drainage Ditches 可以随便求最大流

https://www.luogu.org/problemnew/show/P3376

然后这有个模板题用dinic~

#include<cstdio>
#include<algorithm>
#define rep(i,n) for(register int i=1;i<=n;i++)
using namespace std;
typedef long long lint;
inline lint read()
{
    lint s=0,f=1;char c=getchar();
    while(c<0||c>9){if(c==-)f=0;c=getchar();}
    while(c>=0&&c<=9){s=s*10+c-0;c=getchar();}
    return f?s:-s;;
}
const int N=10005;
const int M=100005;
const lint INF=(~0ull>>1);
struct edge
{
    int to,nxt;lint w;
    edge(int to=0,int nxt=0,lint w=0):to(to),nxt(nxt),w(w){}
}edges[M<<1];
int n,m,cnt,st,ed,s,t;
int head[M<<1],q[N],d[N];
lint ans;
inline void addEdge(int u,int v,lint w)
{
    edges[++cnt]=edge(v,head[u],w);
    head[u]=cnt;
}
#define cur edges[i].to
inline bool bfs()
{
    rep(i,n)d[i]=0;d[s]=1;
    st=ed=0;q[st++]=s;
    while(ed<st)
    {
        int k=q[ed++];
        for(register int i=head[k];i;i=edges[i].nxt)if(!d[cur]&&edges[i].w)
        {
            d[cur]=d[k]+1;q[st++]=cur;
            if(cur==t)return 1;
        }
    }
    return 0;
}
inline lint dinic(int x,lint f)
{
    if(x==t)return f;
    lint res=f;
    for(register int i=head[x];i&&res;i=edges[i].nxt)if(d[cur]==d[x]+1&&edges[i].w)
    {
        int k=dinic(cur,min(edges[i].w,res));
        if(!k)d[cur]=0;
        edges[i].w-=k;edges[i^1].w+=k;res-=k;
    }
    return f-res;
}
#undef cur
int main()
{
    n=read();m=read();s=read();t=read();cnt=1;
    rep(i,m)
    {
        int u,v;lint w;u=read();v=read();w=read();
        addEdge(u,v,w);addEdge(v,u,0);
    }
    lint flow=0;
    while(bfs())while((flow=dinic(s,INF)))ans+=flow;
    printf("%lld",ans);
    return 0;
}

老是忘记cnt=1;orz

[日常摸鱼]最大流

标签:include   tps   printf   bool   忘记   while   dinic   span   color   

原文地址:https://www.cnblogs.com/yoooshinow/p/8419478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!