【算法】【树】最近公共祖先LCA——Tarjan算法
来源:互联网 发布:怎么上架淘宝宝贝 编辑:程序博客网 时间:2024/05/22 10:59
class LCA_problem {public: const static int N = 10000 + 10; int parent[N]; int ancester[N]; vector<int> tree[N]; vector<int> qes[N]; bool isroot[N]; bool visited[N]; int n; void init(int n) { for (int i = 1; i <= n; i++) { parent[i] = i; isroot[i] = true; ancester[i] = 0; visited[i] = false; qes[i].clear(); tree[i].clear(); } } int find(int u) { if (u != parent[u]) {parent[u] = find(parent[u]); return parent[u];} return u; } int union_(int x, int y) { int p1 = find(x); int p2 = find(y); if (p1==p2) return 0; parent[p1] = p2; return 1; } void lca(int u) { //模拟深度遍历,在遍历的过程中,回答查询问题; ancester[u] = u; int size = tree[u].size(); //printf("# %d %d\n", u, size); for (int i = 0; i < size; i++) { lca(tree[u][i]); union_(u, tree[u][i]); ancester[find(u)] = u; } visited[u] = true; size = qes[u].size(); for (int i = 0;i < size; i++) { if (visited[qes[u][i]]) { printf("%d\n", ancester[find(qes[u][i])]); return; } } } void solve() { int test_num, start, end; scanf("%d", &test_num); for (int t = 0; t < test_num; t++) { scanf("%d", &n); init(n); for (int i = 0;i < n-1; i++) { scanf("%d%d", &start, &end); tree[start].push_back(end); isroot[end] = false; } scanf("%d%d", &start, &end); qes[start].push_back(end); qes[end].push_back(start); for (int i = 1; i <= n; i++) { if (isroot[i]) { lca(i); break; } } } }};
0 0
- 【算法】【树】最近公共祖先LCA——Tarjan算法
- LCA最近公共祖先——tarjan算法
- LCA最近公共祖先(tarjan离线算法)
- 最近公共祖先LCA:Tarjan算法
- 最近公共祖先LCA Tarjan算法
- 最近公共祖先LCA Tarjan算法
- 最近公共祖先LCA Tarjan算法
- 最近公共祖先LCA:Tarjan算法
- LCA(最近公共祖先)Tarjan算法
- [算法] LCA 最近公共祖先 (Tarjan)
- 最近公共祖先LCA--Tarjan算法
- LCA 最近公共祖先——Tarjan(离线)算法的基本思路及其算法实现
- 算法摘记 最近公共祖先LCA Tarjan算法
- 最近公共祖先(LCA)——离线Tarjan算法+并查集优化
- Tarjan算法求LCA(最近公共祖先)
- Tarjan离线算法求最近公共祖先(LCA)
- POJ1986 DistanceQueries 最近公共祖先LCA 离线算法Tarjan
- Tarjan离线算法求最近公共祖先(LCA)
- 2012 Asia JinHua Regional Contest
- BZOJ 1047: [HAOI2007]理想的正方形
- LeetCode: Unique Binary Search Trees II
- 脚本语言
- CSS层叠顺序以及选择器特殊性计算
- 【算法】【树】最近公共祖先LCA——Tarjan算法
- 如何删除右键菜单栏中的选项
- hdu 4287 Intelligent IME
- Codeforces 462B Appleman and Card Game(贪心)
- svn diff
- CODEBLOCKS下怎么打开C99选项
- SQL Server 2008的数据类型
- hadoop学习【11】——hadoop-2.4.1集群真实环境部署文档
- 算法笔记--快速排序