模板 網路流 Dinic

2021-08-04 20:18:50 字數 608 閱讀 8649

const

int maxn = 207, inf = 0x3f3f3f3f;

int n, m;//n個點,m條邊

int mp[maxn][maxn];//鄰接矩陣

int que[maxn*maxn], head, tail;//bfs佇列 ,首,尾

int dist[maxn];//距源點距離,分層圖

int ans;

bfs查詢是否連通:

bool bfs() }}

return dist[n] > 0;//匯點的dis小於零,表明bfs不到匯點

}

遞迴尋找增廣路並修改剩餘流量:

//find代表一次增廣,函式返回本次增廣的流量,返回0表示無法增廣

int find(int from, int low)

return

0;}

dinic():

int dinic()
網路流的最大流等於最小割。

模板 網路流 dinic

題目描述輸入 輸入包括幾種情況。對於每一種情況,第一行包含兩個空間分離的整數,n 0 n 200 和m 2 m 200 n是農民約翰挖溝的數量。m是那些溝渠的交叉點。十字路口1是池塘。交叉點m是流。以下n行中的每乙個包含三個整數,si 穎娃和ci。si和ei 1 si,ei m 表示該溝之間的交匯點...

poj 3469 dinic網路流模板

題意 要在由核a和核b組成的雙核cpu上執行n個模組。模組i在核a上執行的花費為ai,在核b上執行的花費為bi。有m個相互之間需要進行資料交換的模組組合 ai,bi 如果這倆模組在同一核上執行則沒有花費。否則會產生wi的花費。計算執行所有模組所需的最小花費。解析 用最小的費用將物件花費成兩個集合的問...

網路流dinic演算法

遇到過不少網路流的題目,直接找增廣路徑的方法時間複雜度實在受不了。常面臨tle的問題。通過學習這個dinic演算法,不僅 短,效率也高。該演算法的重點在於乙個層次圖,是在普通增廣的方法上加了優化,普通的增廣是每次在圖上四處遊蕩,直到找到匯點為止。dinic演算法就是把每個點都給乙個等級level l...