int dfn[maxn]; //第i个点被dfs到次序 int low[maxn]; //二叉搜索树上i所在子数上仍在栈中的最小dfn,low[i]相等的点在一个强连通分量中 bool vis_tarjan[maxn]; stack<int>s_tarjan; int tot_tarj
thjkhdf12 博客园 首页 新随笔 联系 订阅 管理 随笔- 99 文章 - 0 评论 - 0 阅读 - 11671 【模板】spfa int dis_spfa[maxn]; bool vis_spfa[maxn]; queue<int>q_spfa; void spfa(int x) { mem(dis_spfa, 0x3f); mem(vis_spfa, ...
int n; const int maxn = 100010; int a[maxn]; int sum1[maxn]; int sum2[maxn]; inline int lowbit(int x) { return x & (-x); } inline void updata(int
;分类: 模板 好文要顶 关注我 收藏该文 微信分享 thjkhdf12 粉丝- 0 关注- 0 +加关注 0 0 升级成为会员 « 上一篇: 【模板】并查集 » 下一篇: 【模板】链式前向星 posted on 2019-10-09 17:35 thjkhdf12 阅读(161) 评论(0) 编辑 收藏 举报 ...
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int fa[1010]; 6 int n, m; 7 8 int find(int x) 9 { 10 if (fa[x] == x)
int dfn[maxn]; int low[maxn]; bool cut[maxn]; int tot; void tarjan(int x) { dfn[x] = low[x] = ++tot; int cntf = 0; for (Re int i = head[x]; i != -1; i
摘要:int dfn[maxn]; int low[maxn]; bool cut[maxn]; int tot; void tarjan(int x) { dfn[x] = low[x] = ++tot; int cntf = 0; for (Re int i = head[x]; i != -1; i 阅读全文 posted @ 2019-10-23 10:41 thjkhdf12 阅读(71) 评论(0) 推荐(0) 编辑 P...
{ intpair t=q_dij.top(); q_dij.pop();if(vis_dij[t.first])continue; vis_dij[t.first]=true;for(Reinti = head[t.first]; i != -1; i =e[i].nxt) {intv =e[i].v;intw =e[i].w;if(!vis_dij[v] && dis_dij[v] > t.second +w) ...
node[x].r=r;if(l == r)return;intmid = (node[x].l + node[x].r) >>1; build(lc(x), l, mid); build(rc(x), mid+1, r); } inlinevoidadd(intx,constint&k) {if(node[x].l == node[x].r) node[x].num++;else{intmid = (node[x].l + node[x].r) >>1;if(k <...
head[u]=cnt; }intdfs_dinic(intx,intflow) {if(x == ed)returnflow;intres =0;for(inti = now[x]; i != -1; i =e[i].nxt) {intv =e[i].v; now[x]=i;if(d[v] +1== d[x] && e[i].w >0) {intk =dfs_dinic(v, min(e[i].w, flow)); ...