EK算法网络流模板hdu1532
生活随笔
收集整理的這篇文章主要介紹了
EK算法网络流模板hdu1532
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hdoj 1532是一道可以作為模板題目練手。
模板代碼:
[cpp]?view plaincopy print?
- #include?<cstdio>??
- #include?<cstring>??
- #include?<iostream>??
- #include?<string>??
- #include?<algorithm>??
- #include?<map>??
- #include?<vector>??
- using?namespace?std;??
- const?int?N?=?1100;??
- const?int?INF?=?0x3f3f3f3f;??
- ??
- struct?Node??
- {??
- ????int?to;//終點??
- ????int?cap;?//容量??
- ????int?rev;??//反向邊??
- };??
- ??
- vector<Node>?v[N];??
- bool?used[N];??
- ??
- void?add_Node(int?from,int?to,int?cap)??//重邊情況不影響??
- {??
- ????v[from].push_back((Node){to,cap,v[to].size()});??
- ????v[to].push_back((Node){from,0,v[from].size()-1});??
- }??
- ??
- int?dfs(int?s,int?t,int?f)??
- {??
- ????if(s==t)??
- ????????return?f;??
- ????used[s]=true;??
- ????for(int?i=0;i<v[s].size();i++)??
- ????{??
- ????????Node?&tmp?=?v[s][i];??//注意??
- ????????if(used[tmp.to]==false?&&?tmp.cap>0)??
- ????????{??
- ????????????int?d=dfs(tmp.to,t,min(f,tmp.cap));??
- ????????????if(d>0)??
- ????????????{??
- ????????????????tmp.cap-=d;??
- ????????????????v[tmp.to][tmp.rev].cap+=d;??
- ????????????????return?d;??
- ????????????}??
- ????????}??
- ????}??
- ????return?0;??
- }??
- ??
- int?max_flow(int?s,int?t)??
- {??
- ????int?flow=0;??
- ????for(;;){??
- ????????memset(used,false,sizeof(used));??
- ????????int?f=dfs(s,t,INF);??
- ????????if(f==0)??
- ????????????return?flow;??
- ????????flow+=f;??
- ????}??
- }??
- int?main()??
- {??
- ????int?n,m;??
- ????while(~scanf("%d%d",&n,&m))??
- ????{??
- ????????memset(v,0,sizeof(v));??
- ????????for(int?i=0;i<n;i++)??
- ????????{??
- ????????????int?x,y,z;??
- ????????????scanf("%d%d%d",&x,&y,&z);??
- ????????????add_Node(x,y,z);??
- ????????}??
- ????????printf("%d\n",max_flow(1,m));??
- ????}??
- }??
總結
以上是生活随笔為你收集整理的EK算法网络流模板hdu1532的全部內容,希望文章能夠幫你解決所遇到的問題。