【算法学习】网络流模板……
生活随笔
收集整理的這篇文章主要介紹了
【算法学习】网络流模板……
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網絡流最大流(最小割)Dinic模板……
1 const int INF=99999999; 2 const int Maxn=; 3 const int Maxm=; 4 inline int Min(int p,int q){return p<q?p:q;} 5 int n,m,h[Maxn+5],to[Maxm*2+5],cap[Maxm*2+5],nxt[Maxm*2+5],tot=1,Sum=0,que[Maxn+5],l,r,lv[Maxn+5],iter[Maxn+5]; 6 inline void ins(int x,int y,int c){nxt[++tot]=h[x];to[tot]=y;cap[tot]=c;h[x]=tot;} 7 inline void INS(int x,int y,int c){ins(x,y,c);ins(y,x,0);} 1 inline bool lvl() { 2 memset(lv,0,sizeof lv); 3 int u; 4 l=r=1; que[1]=0; lv[0]=1; 5 while(l<=r) { 6 u=que[l++]; 7 eF(i,u) if(!lv[to[i]]&&cap[i]) { 8 lv[to[i]]=lv[u]+1; 9 que[++r]=to[i]; 10 } 11 } 12 return lv[T]; 13 } 14 int flow(int u,int f) { 15 if(u==T) return f; 16 int d,sum=0; 17 for(int&i=iter[u];i;i=nxt[i]) if(lv[to[i]]==lv[u]+1&&cap[i]) { 18 d=flow(to[i],Min(f,cap[i])); 19 sum+=d; f-=d; 20 cap[i]-=d; cap[i^1]+=d; 21 if(!f) return sum; 22 } 23 return sum; 24 } 25 int Dinic() { 26 int ans=0; 27 while(lvl()) { 28 for(int i=0;i<=T;++i) iter[i]=h[i]; 29 ans+=flow(0,INF); 30 } 31 return ans; 32 } 33 int main() { 34 init(); 35 printf("%d",Sum-Dinic()); 36 }沒了……
init自己打 :(
轉載于:https://www.cnblogs.com/PinkRabbit/p/7115407.html
總結
以上是生活随笔為你收集整理的【算法学习】网络流模板……的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVPArms MVP快速集成框架
- 下一篇: CorelDRAWX4的VBA插件开发(