随笔分类 - LCA
hdu 2586 How far away ?
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2586在lca的基础上维护一下距离 维护是在并查集里进行的代码:#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <map>#include <vector>#include <set>#include <stack>#include <queue&
阅读全文
1699. Turning Turtles
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1699从一个点到另一个点正好有一条路 所以原图是一棵树先求出每一对点的最近公共祖先lca然后一遍dfs 求出每个点到它的lca的转弯数 最后还要判定两个点在lca处是否还要一个转弯代码:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<map>#include<vector>#include<stack>#inc
阅读全文
1329. Galactic History
摘要:http://acm.timus.ru/problem.aspx?space=1&num=1329最近公共祖先代码:#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<vector>#include<set>#include<map>#include<string>#include<queue>#include<stack
阅读全文
hdu 4297 One and One Story
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4297此题目中的图是一个特殊的森林 特殊在于它的树都有一个环 这个环内点包括树根基本思路:先用并查集 对图进行处理1 建立完整森林2 构成环的边不加入森林3 记录每个环上有多少点 每个环上点属于第几个环然后处理 couples不在一个树上的不可达同一个 room 内 特别处理将 couples 储存然后LCA 这里LCA 与原始LCA 有不同如果最近公共祖先不在环上 直接求出 如果在环上 求其分别是环上哪一个点过来的最后就好处理了对不同方案进行选优代码及其注释:#include <iostream>
阅读全文
poj 1330 Nearest Common Ancestors
摘要:http://poj.org/problem?id=1330最近公共父结点离线算法 LCA用并查集 和 dfs每搜到一个点 先让其父结点等于自己继续往下搜 这时如果询问已搜过的点 则两点之间的最近公共父结点就是 已搜过的点的最上父结点若没搜过 就继续深搜所用相连的点都搜完后 让此点的父结点为上一层结点#include<iostream>#include<cstring>using namespace std;const int N=10005;struct node{ struct tt *next;}mem[N];struct tt{ struct tt *next;
阅读全文