網路流 EK演算法

2021-09-22 01:59:03 字數 923 閱讀 2991

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或者經過更多的節點的中轉,目前確定的是每條水管中水流的流向是確定的 單向 且每個水管單位時間內都有屬於自己的水流量的上限 超過會爆水管 問題是...