图论之离线lca模板
来源:互联网 发布:sql注入 预处理 编辑:程序博客网 时间:2024/06/05 06:09
#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define MEM(a,b) memset(a,b,sizeof(a));const int N=100010;int n,m;struct Edge{ int u,v,w,next;}edge[2*N],Q[N];int fa[N],dis[N];bool vis[N];int cnt,qcnt;int head[N],qhead[N];void addedge(int u,int v,int w){ edge[cnt].u=u;edge[cnt].v=v;edge[cnt].w=w;edge[cnt].next=head[u]; head[u]=cnt++;}void addQ(int u,int v){ Q[qcnt].v=v;Q[qcnt].next=qhead[u];qhead[u]=qcnt++;}void tarjan(int x){ fa[x]=x; vis[x]=1; for(int i=head[x];i!=-1;i=edge[i].next){ int v=edge[i].v; if(!vis[v]){ dis[v]=dis[x]+edge[i].w; tarjan(v); fa[v]=x;//向上合并 } } for(int i=qhead[x];i!=-1;i=Q[i].next){ int v=Q[i].v; if(vis[v]){ Q[i].w=dis[x]+dis[v]-2*dis[root(v)]; Q[i^1].w=Q[i].w; } }}int main(){ cnt=0;qcnt=0; memset(head, -1, sizeof(head)); memset(qhead, -1, sizeof(qhead)); memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); memset(fa,-1,sizeof(fa)); tarjan(1); return 0;}
0 0
- 图论之离线lca模板
- 离线求lca模板
- lca 离线模板
- lca 离线tarjan模板
- LCA离线+在线+hdu2586(模板)
- LCA离线tarjan算法模板
- 经典离线求lca[模板]
- tajan离线求LCA 模板
- LCA离线tarjan算法模板
- lca离线算法模板(poj1330验证)
- poj 1330lca模板题离线算法
- LCA模板题(在线加离线)
- LCA之tarjan模板
- LCA离线模板(Tarjan)倍增模板 hdu2586
- LCA之树链剖分 zhn_666的lca 模板
- LCA之ST算法模板
- LCA之倍增算法模板
- LCA之树链剖分(模板)
- 图论之2-sat模板
- Leetcode: Lowest Common Ancestor of a Binary Search Tree
- ScheduleFactory(不同scheduler name)
- Android开发者指南(6) —— AIDL
- pytnon DES加密CBC模式
- 图论之离线lca模板
- java基础知识—String、StringBuffer和StringBuilder
- 教你在Android Studio 中进行单元测试
- nginx+lua+redis搭建
- 深度学习在图像识别中的应用--学习笔记3
- 图论之树链剖分模板
- Android_运用log4j打印日志
- 【Maven】Maven解决Maven Repository 没有
- (算法入门)基本图论-深度优先搜索之JAVA实现