最大流(推薦部落格
不斷增廣
sap模板
1const
int maxn = 20010;//
點數的最大值
2const
int maxm = 880010;//
邊數的最大值
3const
int inf = 0x3f3f3f3f;4
5struct
nodeedge[maxm];
9int
tol;
10int
head[maxn];
11int
dep[maxn];
12int gap[maxn];//
gap[x]=y :說明殘留網路中dep[i]==x的個數為y
1314
int n;//
n是總的點的個數,包括源點和匯點
1516
void
init()
2021
void addedge(int u, int v, int
w)33
34void bfs(int start, int
end)53}
54}5556
int sap(int start, int
end)
73for(i = 0; i < top; i++)
77 res +=temp;
78 top =inser;
79 u = edge[s[top]].from;80
}81if(u != end && gap[dep[u]-1] == 0)//
出現斷層,無增廣路
82break;83
for(i = cur[u]; i != -1; i =edge[i].next)
84if(edge[i].cap != 0 && dep[u] == dep[edge[i].to] + 1)85
break;86
if(i != -1
)else98}
99 --gap[dep[u]];
100 dep[u] = min+1
;101 ++gap[dep[u]];
102if(u != start) u = edge[s[--top]].from
;103
}104
}105
return
res;
106 }
只有不斷學習才能進步!
wenbao與拓撲排序
dfs 小資料map存圖 1 intmark maxn map maxn maxn aim maxn cot 2bool dfs intx 9 10 mark x 1 11 aim cot x 12return true 13 14inttopo 21 22return true 23 大資料鄰接表...
wenbao與鄰接表
結構體儲存 1 struct edge 2edge maxn 5int head maxn 6void addedge int x,int y,int val 7 呼叫1 void use int x 7 vector儲存 1 include 2 include 3 struct edge8 9 v...
wenbao與擴充套件kmp
給定兩個字串s和t 長度分別為n和m 下標從0開始,定義extend i 等於s i s n 1 與t的最長公共字首的長度,求出所有的extend i next i t i t m 1 與t的最長公共字首長度 extend i s i s n 1 與t的最長公共字首的長度。1 c c 模板 2 in...