Dinic 網路流

來源:互聯網
上載者:User

標籤:line   turn   for   ||   nic   ret   int   ems   return   

寫個部落格貼板子……

inline void add_edge(int x,int y,int z){    e[++tot].x=y,e[tot].cap=z;    e[tot].next=h[x],h[x]=tot;    e[++tot].x=x,e[tot].cap=z;    e[tot].next=h[y],h[y]=tot;}bool bfs(){    queue<int> q;    memset(deth,-1,sizeof(deth));    deth[S]=0,q.push(S),cur[S]=h[S];    while(!q.empty()){        int x=q.front();q.pop();        for(int i=h[x];i;i=e[i].next){            if(!e[i].cap||~deth[e[i].x])continue;            deth[e[i].x]=deth[x]+1;            cur[e[i].x]=h[e[i].x];            q.push(e[i].x);            if(e[i].x==T)return true;        }    }    return false;}int dfs(int x,int flow){    if(x==T)return flow;    for(int &i=cur[x];i;i=e[i].next)        if(e[i].cap&&deth[e[i].x]==deth[x]+1){            int sum=dfs(e[i].x,min(flow,e[i].cap));            if(sum>0){                e[i].cap-=sum,e[i^1].cap+=sum;                return sum;            }        }    return 0;}int dinic(){    int ans=0,k;    while(bfs())    while(k=dfs(S,2e9))ans+=k;    return ans;}

Dinic 網路流

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.