HDU2586 离线tarjan LCA
来源:互联网 发布:listview滑动卡顿优化 编辑:程序博客网 时间:2024/05/05 07:12
离线LCA求一棵树上的两点间的最近距离
#include <iostream>#include <vector>#include <cstdio>#include <cstring>#define maxn 41111using namespace std;struct node{ int v,next,len;}edge[84444];struct que{ int u,v,next,id;}ask[422];int father[maxn],vis[maxn],ans[maxn],in[maxn],lca[222];int head[44444],h[44444],dis[44444];int n,m,c,e,q;void addedge(int u,int v,int w){ edge[e].v = v; edge[e].len = w; edge[e].next = head[u]; head[u] = e++;}void addquery(int u,int v,int w){ ask[q].v = v; ask[q].u = u; ask[q].id = w; ask[q].next = h[u]; h[u] = q++;}void init(){ for(int i = 0 ; i <= n ; i ++){ father[i] = i; vis[i] = 0; dis[i] = 0; } memset(head,-1,sizeof(head)); memset(h,-1,sizeof(h)); e = 0; q = 0;}int find(int x){ if(father[x] == x) return x; int t = find(father[x]); father[x] = t; return t;}void LCA(int u){ father[u] = u; vis[u] = 1; for(int i = h[u] ; i != -1 ; i = ask[i].next){ int v = ask[i].v; if(vis[v] == 1){ int root = find(v); lca[ask[i].id] = root; } } for(int i = head[u] ; i != -1 ; i = edge[i].next){ int v = edge[i].v; if(!vis[v]){ dis[v] = dis[u] + edge[i].len; LCA(v); father[v] = u; } }}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); init(); for(int i = 1 ; i < n ; i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); addedge(u,v,w); addedge(v,u,w); } for(int i = 0 ; i < m ; i ++){ int a,b; scanf("%d%d",&a,&b); addquery(a,b,i); addquery(b,a,i); } LCA(1); for(int i = 0 ; i < q ; i += 2){ printf("%d\n",dis[ask[i].u]+dis[ask[i].v]-2*dis[lca[ask[i].id]]); } } return 0;}
- HDU2586 离线tarjan LCA
- tarjan 离线 lca hdu2586
- LCA离线模板(Tarjan)倍增模板 hdu2586
- LCA Tarjan模板 HDU2586
- hdu2586 LCA 离线算法
- poj1330+hdu2586 LCA离线算法
- LCA离线+在线+hdu2586(模板)
- HDU2586 How far away ?(tarjan+并查集离线求lca)
- hdu2586 How far away? Tarjan(离线)算法求最近公共祖先LCA 待补完
- 详谈LCA 在线(RMQ-ST) 和 离线(Tarjan)hdu2586为例
- hdu2586-How far away ?(最近公共祖先(LCA),离线Tarjan算法)
- hdu2586 How far away ?--tarjan & LCA
- hdu2586 How far away ? 【图论-Tarjan-Lca】
- Tarjan-LCA HDU2586 How far away ?
- LCA 离线算法 tarjan
- LCA 离线tarjan算法
- POJ1330(LCA-离线tarjan)
- LCA Tarjan离线算法
- hud1150二分图最小顶点覆盖
- 修身
- 分页算法
- Light oj 1082 - Array Queries(区间最小值)
- Codeforces Beta Round #73 (Div. 2 Only)——A,B,C
- HDU2586 离线tarjan LCA
- Gamebryo—Material System
- Gamebryo—Shader System
- HDU2275--Kiki & Little Kiki 1
- Gamebryo—Mesh Profile System
- 导出Excel
- Gamebryo—帧渲染系统
- 强大5G Wi-Fi有望普及
- Gamebryo—NiApplication