E - Minimum spanning tree for each edge
2017-07-17 15:49
519 查看
这个题目参考网上的思路。
首先求个最小生成树,然后每加一条边,就把成环的里面除加入的这条边的最大的删除,就是答案。
最小生成树用 克鲁斯卡尔 弄一弄,边弄最小生成树的时候边建树。
然后用lca搞一搞就行了。
部分代码如下
首先求个最小生成树,然后每加一条边,就把成环的里面除加入的这条边的最大的删除,就是答案。
最小生成树用 克鲁斯卡尔 弄一弄,边弄最小生成树的时候边建树。
然后用lca搞一搞就行了。
部分代码如下
void dfs(int u,int fz,int dp){ deep[u] = dp; fa[u][0]=fz; for(int i=head[u];~i;i=E[i].forword){ int now = E[i].to; if(now==fz){ mx[u][0]=E[i].cost; continue; } dfs(now,u,dp+1); } };
int lca(int u,int v){ int ret=0; while(deep[u]!=deep[v]){ if(deep[u]<deep[v]) swap(u,v); int d = deep[u] - deep[v]; for(int i=0;i<25;i++){ if(d>>i&1){ ret = max(ret,mx[u][i]); u = fa[u][i]; } } } if(u==v) return ret; for(int i=24;i>=0;i--){ if(fa[u][i] != fa[v][i]) { ret = max(ret, mx[u][i]); ret = max(ret, mx[v][i]); u = fa[u][i]; v = fa[v][i]; } } return max(ret,max(mx[u][0],mx[v][0])); }
相关文章推荐
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge MST+树上路径倍增
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST
- Minimum spanning tree for each edge CodeForces - 609E
- Minimum spanning tree for each edge CodeForces - 609E(ST算法+树链剖分(或倍增LCA)+最小生成树)
- Minimum spanning tree for each edge CodeForces - 609E (Lca+最小生成树)
- 609E - Minimum spanning tree for each edge
- CF# Educational Codeforces Round 3 E. Minimum spanning tree for each edge
- CodeForces 609 E.Minimum spanning tree for each edge(最小生成树-Kruskal+在线倍增LCA)
- 文章标题 coderforces 609E : Minimum spanning tree for each edge (MST+LCA)
- Codeforces Edu3 E. Minimum spanning tree for each edge
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge 最小生成树+树链剖分+线段树
- 【Educational Codeforces Round 3 E】【树链剖分】Minimum spanning tree for each edge 图构最小生成树,生成树必须包含第i条边
- Educational Codeforces Round 3 E (609E) Minimum spanning tree for each edge
- Kruskal Algorithm for Minimum Spanning Tree
- HDU 4408 Minimum Spanning Tree (图的最小生成树计数 Kruskal + Matrix_Tree定理)
- Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
- 最小生成树 (Minimum Spanning Tree,MST) --- Prim算法
- HDU 4408 - Minimum Spanning Tree
- MST(Minimum Spanning Tree,最小生成树)
- 朱刘算法(Directed Minimum Spanning Tree/Directed MST/Minimum Arborescence/Optimum Branchings)