最近在學習網路流部分,之前看了一下dinic演算法,一直沒機會嘗試一下,今天終於體驗了一下,然後就做一下總結
在做題過程中使用了鄰接表,dinic演算法,以及乙個超神的擴充套件棧空間的語句
具體步驟在下面的**中體現
#include#include#pragma comment(linker, "/stack:1024000000,1024000000") //用來提高棧空間,新技能get!
const int maxn=100005;
const int inf=0x0fffffff;
int m,n,top,head[maxn],s,e,mw,me,level[maxn],queue[maxn],top_q;
struct edge
edge[2*maxn];
int getmin(int a,int b)
void addedge(int a,int b,int c)
bool bfs()}}
return false;
}int dfs(int p,int a)//核心部分:p是當前點,a是能流入到該點的最大流量}}
if(flow==0)
level[p]=0;
return flow;//返回向下最大流量
}void dinic()
printf("%d\n",ans);
}int main()
if(x
求餘區間的求和類問題 離線 線段樹 HDU4228
題目大意 給乙個陣列a,他的順序是嚴格的單調增,然後有如下三個操作 加入乙個val到a陣列裡面去,加入的位置就是a i 1 刪除乙個a i val的值 查詢所有下標i 5 3的值 思路 線段樹 離線 首先因為線段樹中不支援新增 刪除操作的,所以只能離線把所有的val離散化以後放到區間裡面去。然後關鍵...
hdu 4280比較裸的dinic演算法
演算法比較裸,不過要注意在hdu上遞迴層次多了是要暴棧的,所以看了別人的知道了外掛程式開棧這個東西避免暴棧,真心好用!include stdio.h include string.h pragma comment linker,stack 1024000000,1024000000 外掛程式開棧 d...
Dinic演算法學習資料
初始化,計算剩餘圖 while bfs bfs過程的作用 1,計算層次圖 2,當匯點不再層次圖內時返回0 else 對路徑增廣 dinic演算法模板 author dd engi void dinic for int i 0 ic delta path i back c delta path n m...