網路流之最大流

2022-05-10 22:39:18 字數 1002 閱讀 2071

例題網路流一般可以解決形如以上的類似匹配的問題,將複雜,抽象的問題轉化成圖,在圖上跑bfs,dfs,從而簡化問題難度。

如此題,有n個插頭,m個插座,部分插頭可以轉化為其他插頭,插座與乙個插頭適配,問最小沒有被插的插座的數量,我們可以設乙個源點連向插頭,插頭連向插座,再將插座連想匯點跑最大流即可出答案。

#include#include#include#includeusing namespace std;

typedef long long ll;

const ll inf=1e18,n =300007, m = 300007;

struct node edge[m];

ll tot, head[n];

void addedge(ll u, ll v, ll w)

ll maxflow;

ll n,m,s,t,k,cnt;

ll deep[n]; //層級數,其實應該是level

ll now[m]; //當前弧優化

queue q;

bool bfs()

} }return 0;

}//flow是整條增廣路對最大流的貢獻,rest是當前最小剩餘容量,用rest去更新flow

ll dfs(ll u, ll flow)

} return ans;

}void dinic()

string s1,s2;

mapma;

int main()

} scanf("%lld",&m);

for(int i=1;i<=m;i++)

else

} scanf("%lld",&k);

for(int i=1;i<=k;i++)

if(ma[s2]==0)

addedge(ma[s1],ma[s2],inf);

} dinic();

printf("%lld\n",m-maxflow);

}

網路流之最大流

網路流之最大流 一 問題引入。有n個排水口,不同的排水口之間有m條水管連線,水一開始從源點s流出,最終到達t。每條邊 水管 都有乙個最大的流量。除了s,t外,每個排水口的流入量都要等於流出量,詢問最多能有多少水到達終點t 如圖所示 即poj 1273 可以將問題進行如下整理 1 用c e 表示每條邊...

網路流之最大流

因為網上介紹網路流和最大流理論的文章非常的多,也都解釋的非常清晰並附帶 再加上繪圖技術不佳,語文表達極差,就只講解一下程式實現部分。想看理論講解及演算法正確性證明的讀者可以上網搜一搜,這裡推薦一篇部落格,鏈結如下 那麼,既然網上的資源那麼多,為什麼還要寫這篇部落格呢?一是為了湊數做筆記,二是網上的許...

網路流之 最大流

最大流演算法是網路流中基礎的演算法,解決的方法有很多,比如ek,dinic,sap等等,在這裡介紹一下ek演算法。從源點s開始廣度優先尋找一條到t的路徑,計算出這條路徑的最大流量 短板效應 l,回溯,將這條路徑的每條邊的最大流量減去l,然後新增反向邊,容量為l,網路流的最大流max l。當找不到從s...