POJ1330 LCA/给树的节点标记层数
来源:互联网 发布:淘宝一键复制有坏处吗 编辑:程序博客网 时间:2024/05/29 19:40
1 题意,求LCA——Least Common Ancestors,最近公共祖先。
2 分析
代码二,先dfs将各个节点的层数标记上。
代码一,标记一下数组。
3
代码一,16ms
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>using namespace std;const int maxn=10010;int parent[maxn];int vis[maxn];int Find(int a,int b){ //分开便利OR一步一ch while(!vis[a]){ vis[a]=1; if(-1!=parent[a]) a=parent[a]; } while(!vis[b]){ b=parent[b]; } return b;}int main(){ int kk; scanf("%d",&kk); while(kk--){ int n,a,b; memset(parent,-1,sizeof(parent)); memset(vis,0,sizeof(vis)); scanf("%d",&n); for(int i=1;i<n;i++){ scanf("%d%d",&a,&b); parent[b]=a; } scanf("%d%d",&a,&b); int res=Find(a,b); cout<<res<<endl; }}
代码二,60ms
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <vector>using namespace std;const int maxn=10010;int parent[maxn];vector <int> son[maxn];int r[maxn];//????????void DLR(int root,int step){ r[root]=step;// for(int i=0;i<son[root].size();i++) DLR(son[root][i],step+1);}int Find(int a,int b){ while(a!=b){ if(r[a]>r[b]&&parent[a]!=-1) a=parent[a]; else if(r[a]<=r[b]&&parent[b]!=-1) b=parent[b]; } return a;}int main(){ int kk; scanf("%d",&kk); while(kk--){ int n,a,b; for(int i=0;i<maxn;i++){ son[i].clear(); r[i]=-1; parent[i]=-1; } scanf("%d",&n); for(int i=1;i<n;i++){ scanf("%d%d",&a,&b); son[a].push_back(b); parent[b]=a; } int root=1; for(root=1;parent[root]!=-1;root++);//?????????????????1,2,...n DLR(root,0);//DLR??????data(?) left right;0??? scanf("%d%d",&a,&b); int res=Find(a,b); cout<<res<<endl; }}
0 0
- POJ1330 LCA/给树的节点标记层数
- 二叉树--创建,删除,交换;查找节点的层数,某层多少节点,叶子节点到根节点的路径,LCA
- [树]输出二叉树的节点层数
- 【lca】lca的tarjan写法 poj1330
- 树的最近公共祖先——LCA poj1330 hdu2586
- LCA问题的Tarjan算法(POJ1330)
- poj1330 求二叉树的公共父节点
- 二叉树之查找指定节点所在的层数
- 【lca】lca转rmq poj1330
- LCA问题 poj1330 / poj1470
- poj1330 LCA离线算法
- poj1330 lca转rmq
- POJ1330(LCA-离线tarjan)
- poj1330 倍增LCA
- poj1330 LCA模板题
- poj1330 裸LCA
- [poj1330]lca最劣版
- Poj1330 LCA模板题
- mysqldump备份还原和mysqldump导入导出语句大全详解 转
- 第十五周 项目三 - B-树的基本操作
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
- 51nod 1629 B君的圆锥(三分)
- 线性回归与贝叶斯推理——漫谈机器学习
- POJ1330 LCA/给树的节点标记层数
- C#字符转之UTF8转成Unicode
- 清除浮动的几种常用的方法
- 基于netty的心跳检测
- LeetCode 387. First Unique Character in a String
- 【矩阵相关】[Codeforces - 736D]Permutations
- APICLOUD平台初体验(一个任务系统的开发)
- linux下IO相关知识
- 报数(类似猴子选大王)