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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[USACO4.2]Drainage Ditches

發布時間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [USACO4.2]Drainage Ditches 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OJ題號:
洛谷2740、POJ1273、HDU1532

思路:
最大流模板。

1 #include<queue> 2 #include<cstdio> 3 #include<cctype> 4 #include<vector> 5 #include<cstring> 6 inline int getint() { 7 char ch; 8 while(!isdigit(ch=getchar())); 9 int x=ch^'0'; 10 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 11 return x; 12 } 13 const int E=402,V=201,inf=0x7fffffff; 14 int s,t; 15 struct Edge { 16 int from,to,remain; 17 }; 18 Edge e[E]; 19 std::vector<int> g[V]; 20 int sz=0; 21 inline void add_edge(const int u,const int v,const int w) { 22 e[sz]=(Edge){u,v,w}; 23 g[u].push_back(sz); 24 sz++; 25 } 26 int a[V],p[V]; 27 inline int Augment() { 28 memset(a,0,sizeof a); 29 a[s]=inf; 30 std::queue<int> q; 31 q.push(s); 32 while(!q.empty()&&!a[t]) { 33 int x=q.front(); 34 q.pop(); 35 for(unsigned i=0;i<g[x].size();i++) { 36 Edge &y=e[g[x][i]]; 37 if(!a[y.to]&&y.remain) { 38 p[y.to]=g[x][i]; 39 a[y.to]=std::min(a[x],y.remain); 40 q.push(y.to); 41 } 42 } 43 } 44 return a[t]; 45 } 46 inline int EdmondsKarp() { 47 int maxflow=0; 48 while(int flow=Augment()) { 49 for(int i=t;i!=s;i=e[p[i]].from) { 50 e[p[i]].remain-=flow; 51 e[p[i]^1].remain+=flow; 52 } 53 maxflow+=flow; 54 } 55 return maxflow; 56 } 57 int main() { 58 int n=getint(),m=getint(); 59 s=1,t=m; 60 for(int i=0;i<n;i++) { 61 int u=getint(),v=getint(),w=getint(); 62 add_edge(u,v,w); 63 add_edge(v,u,0); 64 } 65 printf("%d\n",EdmondsKarp()); 66 return 0; 67 }

?

轉載于:https://www.cnblogs.com/skylee03/p/7252445.html

總結

以上是生活随笔為你收集整理的[USACO4.2]Drainage Ditches的全部內容,希望文章能夠幫你解決所遇到的問題。

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