ek演算法的思路:
基於貪心的思想,每次選取一條起點到終點的路徑,毋庸置疑,這條路的流量就等於這條路徑上的權值是最小值。將這條路的權值都減去流量,再將路徑的反向邊加上流量(這樣可以就給貪心一次反悔的機會),無限迴圈以上步驟,到找不到任何一條起點到終點的路,最後所有的最小值加起來就是最大流了。
(這只是我對ek演算法的總結,學習網路流還是去看別人的部落格吧)
**:
#include#include#include#include#define ll long long
#define max 100005
const ll mod=1e9+7;
const ll ll_max=9223372036854775807;
using namespace std;
struct node
edge[max];//使用鄰接表存邊
int n,m;
int pre[max],head[max],rec[max];//pre儲存路徑,rec儲存該點在鄰接表中的位置,head鄰接表的指標
ll flow[max];//記錄最小值
int no;
queueq;
void init()
void add(int u,int v,ll c)
ll bfs(int st,int en)//尋找st-->en的路徑
now=edge[now].next;
}if(pre[en]!=-1)
return flow[en];
}return -1;
}ll ek(int st,int en)
}return ans;
}int main()
printf("%lld\n",ek(1,n));
}return 0;
}
網路流 費用流Ek演算法講解
前一篇部落格寫的是最大流。先簡要說一下思路,方便下面的講解。最大流求解是先跑一遍bfs,把每個點定義乙個深度,跑dfs的同時連線一條反向邊方便反悔,避免不必要的時間。現在說一下費用流。費用流的全稱是最小費用最大流 或最大費用最大流 保證最小費用的情況下跑最大流。最小費用?bfs spfa成功解決。我...
網路流 EK演算法及其優化
今天上午我彷彿知道了什麼叫做網路流,這裡推薦一篇部落格,大家入門網路流的可以看一下這篇部落格,保證一看就懂!codevs 1993 include include include include using namespace std const int inf 0x7ffffff queue q ...
網路流最大流 EK演算法
網路流是模仿水流解決生活中類似問題的一種方法策略,來看這麼乙個問題,有乙個自來水廠s,它要向目標t提供水量,從s出發有不確定數量和方向的水管,它可能直接到達t或者經過更多的節點的中轉,目前確定的是每條水管中水流的流向是確定的 單向 且每個水管單位時間內都有屬於自己的水流量的上限 超過會爆水管 問題是...