博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
倍增求LCA
阅读量:5009 次
发布时间:2019-06-12

本文共 1358 字,大约阅读时间需要 4 分钟。

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #define ll long long11 #define inf 101058054012 #define DB double13 using namespace std;14 inline int read()15 {16 int x=0,w=1;char ch=0;17 while(!isdigit(ch)){ if(ch=='-') w=-1;ch=getchar();}18 while(isdigit(ch)) x=(x<<3)+(x<<1)+ch-'0',ch=getchar();19 return x*w;20 }21 int buf[60];22 void write(int x)23 {24 if(x<0) putchar('-'),x=-x;25 buf[0]=0;26 while(x) buf[++buf[0]]=x%10,x/=10;27 if(!buf[0]) buf[0]=1,buf[1]=0;28 while(buf[0]) putchar('0'+buf[buf[0]--]);29 }30 int n,m,h[1000000],s,tot;31 struct po{ int u,v,last;}a[1000000];32 int f[500002][30],dep[500005];33 void add(int u,int v)34 {35 tot++;a[tot].v=v;36 a[tot].last=h[u];h[u]=tot;37 a[tot].u=u;38 }39 void dfs(int u)40 {41 for(int i=h[u];i;i=a[i].last)42 {43 int to=a[i].v;44 if(dep[to]==0)45 {46 dep[to]=dep[u]+1;47 f[to][0]=u;48 dfs(to); 49 }50 } 51 }52 void YU()53 {54 for(int j=1;(1<
<=n;j++)55 for(int i=1;i<=n;i++)56 f[i][j]=f[f[i][j-1]][j-1];57 } 58 int lca(int x,int y)59 {60 if(dep[x]
=0;j--)65 if(f[x][j]!=f[y][j]) x=f[x][j],y=f[y][j];66 //cout<
<<" "<
<
View Code

只是板子。

然后滚回去学习吧。

bye?bye?

 

转载于:https://www.cnblogs.com/adelalove/p/8491818.html

你可能感兴趣的文章
51. N-Queens
查看>>
Linux 命令 - 文件搜索命令 locate
查看>>
[Grunt] grunt.template
查看>>
Ubuntu最小化桌面快捷键Super+D不生效解决
查看>>
Cookie&Session会话跟踪技术
查看>>
UNIX环境高级编程 第17章 高级进程间通信
查看>>
ES的Zen发现机制
查看>>
【hibernate】1、Hibernate的一个注解 @Transient
查看>>
HihoCoder 1877 - Approximate Matching
查看>>
Elastic Search 语法总结
查看>>
py自动化之环境配置
查看>>
Winodws SNMP服务安装和配置(Windows 2003 & 2008 R2)
查看>>
红黑树-想说爱你不容易
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>