日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【算法学习】网络流模板……

發布時間:2023/12/9 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【算法学习】网络流模板…… 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網絡流最大流(最小割)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

總結

以上是生活随笔為你收集整理的【算法学习】网络流模板……的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。