LCA在线算法
来源:互联网 发布:mac 小红点 编辑:程序博客网 时间:2024/04/30 14:55
#include<stdio.h>#include<iostream>#include<algorithm>#include<vector>#include<string.h>#define max 400005using namespace std;int deap[max],vis[max],dis[max],kk[32][max];int maxlog;struct pi{ int to; int cost;}pp;vector<pi>g[max];void init(int v,int p,int d){ vis[v]=1; deap[v]=d; int i,k; kk[0][v]=p; for(i=1;i<maxlog;i++) { if(kk[i-1][v]<0) kk[i][v]=-1; else { kk[i][v]=kk[i-1][kk[i-1][v]]; } } k=g[v].size(); for(i=0;i<k;i++) { if(!vis[g[v][i].to]) { dis[g[v][i].to]=dis[v]+g[v][i].cost; init(g[v][i].to,v,d+1); } } return ;}int find(int a,int b){ if(deap[a]>deap[b]) swap(a,b); int i,f; f=deap[b]-deap[a]; for(i=0;i<maxlog;i++) { if((f>>i)&1) b=kk[i][b]; } if(b==a) return a; for(i=maxlog-1;i>=0;i--) { if(kk[i][a]!=kk[i][b]) { a=kk[i][a]; b=kk[i][b]; } } return kk[0][a];}int solve(int a,int b){ int f; f=find(a,b); return dis[a]+dis[b]-2*dis[f];}
0 0
- LCA在线算法
- LCA 在线算法
- 在线LCA算法
- 在线lca算法模板
- LCA在线算法
- HDU2586【LCA在线算法】
- LCA在线算法
- LCA在线算法ST算法
- LCA在线算法ST算法
- LCA算法-ST在线算法
- LCA在线算法(hdu2586)
- 浅谈LCA的在线算法
- LCA在线算法学习笔记
- 在线倍增算法求LCA
- LCA(dfs+st)在线算法
- RMQ和LCA在线算法
- hdu 2586 LCA在线算法
- hdu 2586 lca在线算法(朴素算法)
- 支持向量机SVM分析
- 小楼一阁的数据结构学习笔记(二、顺序表)
- or1200处理器的异常处理类指令介绍
- 黑马程序员 字节流和字符流缓冲区的对比
- 最长递增子序列模板
- LCA在线算法
- UINavigationController 和 UIScrollView新特性
- oracle JRockit 介绍
- 数据挖掘十大经典算法
- 卢斯卡定理模板(大数组和)
- rsync+inotify实时同步
- windows下通过cygwin来使用hadoop
- jdbc连接数据库的步骤
- 金山网络实习生面试经历