~持续更新中~
Prim算法
int k=0; minn[n]=0; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(minn[j]<minn[k]&&!vis[j]) k=j; } vis[k]=1; for(int j=1; j<=n; j++) { if(!vis[j]&&minn[j]>g[k][j]) minn[j]=g[k][j]; } k=0; }
Dinic最大流

spfa费用流

对拍
:loop maker.exe std.exe my.exe fc std.out my.out if %errorlevel%==0 goto loop pause
对拍2

tarjan求强连通分量

次短路模板
struct node { int u,d; bool operator <(node x)const { return d>x.d; } }; priority_queue<node>Q; void spfa() { fill(dis,dis+n+1,inf); fill(dis2,dis2+n+1,inf); Q.push(node{1,0}); while(!Q.empty()) { node p=Q.top(); Q.pop(); int u=p.u,d=p.d; if(dis2[u]<d) continue; for(int i=head[u]; i; i=e[i].next) { int v=e[i].to,d2=d+e[i].w; if(dis[v]>d2) { swap(dis[v],d2); Q.push(node{v,dis[v]}); }if(dis2[v]>d2&&dis[v]<d2){ dis2[v]=d2; Q.push(node{v,dis2[v]}); } } } }
匈牙利算法——二分图匹配
bool dfs(int u,int t){ for(int i=head[u];i;i=e[i].next){ int v=e[i].to; if(dfn[v]!=t){ dfn[v]=t; if((!match[v])||dfs(match[v],t)){ //贪心思想,如果这个点还未匹配,就和他匹配,反之看一看和这个点已经匹配的点能否再找到一个点与之匹配,若能,就将这个点抢过来 match[v]=u;return true; } } } return false; }
高精度
