http://www.cnblogs.com/live-no-regrets/

手抄网络流dinic核心代码

bool bfs()
{
    memset(dis,-1,sizeof(dis));
    dis[1]=0;
    queue<int>q;
    q.push(1);
    while (!q.empty()){
        int r=q.front();q.pop();
        for (int i=head[r];i!=-1;i=edge[i].nxt){
            int j=edge[i].e;
            if (dis[j]==-1&&edge[i].v){
                dis[j]=dis[r]+1;
                q.push(j);
            }
        }
    }
    return dis[n]!=-1;
}
int dfs(int u,int flow)
{
    if (u==n)return flow;
    int delta=flow;
    for (int i=head[i];i!=-1;i=edge[i].nxt){
        int v=edge[i].e;
        if (dis[v]==dis[u]+1&&edge[i].v>0){
            int d=dfs(v,min(delta,edge[i].v));
            edge[i].v-=d;edge[i^1].v+=d;
            delta-=d;
            if (delta==0)break;
        }
    }
    return flow-delta;
}

int dini()
{
    int ans=0;
    while (bfs()){
        ans+=dfs(1,INF);
    }
    return ans;
}

 

posted @ 2020-11-28 21:16  voyage~st~Imagine  阅读(99)  评论(0编辑  收藏  举报