过了这么长的时间终于开始看LCA了...

有一次训练题卡在LCA当时不会...拖了好久好久...其实现在还是不会...

只会tarjan...

传送门

板子题咯

tarjan的算法就是基于先序遍历的顺序的

#include <bits/stdc++.h>
using namespace std; inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ''; ch = getchar(); }
return x * f;
} const int maxn = 5e5 + ;
//const int maxm = 8e4 + 10; struct Edge { int to, next, c; } edge[ * maxn];
int cnt, head[maxn];
struct Qedge { int to, next; } qedge[ * maxn];
int qcnt, qhead[maxn], n, m;
int lca[maxn], dep[maxn], par[maxn];
bool vis[maxn];
inline void addedge(int u, int v, int c) {
edge[++cnt].to = v;
edge[cnt].c = c;
edge[cnt].next = head[u];
head[u] = cnt;
}
inline void addqedge(int u, int v) {
qedge[++qcnt].to = v;
qedge[qcnt].next = qhead[u];
qhead[u] = qcnt;
}
int getfa(int x) { return x == par[x] ? x : par[x] = getfa(par[x]); } void dfs(int u) {
par[u] = u;
vis[u] = ;
for (int i = head[u]; i; i = edge[i].next) {
int v = edge[i].to;
if (!vis[v]) {
dep[v] = dep[u] + edge[i].c;
dfs(v);
par[v] = u;
}
}
for (int i = qhead[u]; i; i = qedge[i].next) {
int v = qedge[i].to;
if (vis[v]) {
lca[i] = getfa(v);
if (i % ) lca[i + ] = lca[i];
else lca[i-] = lca[i];
}
}
} int main() {
n = read();
for (int i = ; i < n - ; i++) {
int u = read(), v =read(), c = read();
addedge(u, v, c);
addedge(v, u, c);
}
m = read();
for (int i = ; i < m; i++) {
int u = read(), v = read();
addqedge(u, v);
addqedge(v, u);
}
dfs();
for (int i = ; i <= m; i++) {
int ans = dep[qedge[ * i].to] - * dep[lca[ * i]] + dep[qedge[ * i - ].to];
printf("%d\n", ans);
}
return ;
}

codevs 2370 小机房的树(LCA)的更多相关文章

  1. CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先)

    CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先) 题意分析 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天, ...

  2. Codevs 2370 小机房的树 LCA 树上倍增

    题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子, ...

  3. LCA(倍增在线算法) codevs 2370 小机房的树

    codevs 2370 小机房的树 时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点, ...

  4. Codevs 2370 小机房的树

    2370 小机房的树 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为 ...

  5. codevs——2370 小机房的树

    2370 小机房的树  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 小机房有棵焕狗种的树,树上有N个 ...

  6. 放一道比较基础的LCA 的题目把 :CODEVS 2370 小机房的树

    题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子, ...

  7. 【codevs2370】小机房的树 LCA 倍增

    2370 小机房的树  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0 ...

  8. [CodeVS2370] 小机房的树 (LCA, 树链剖分, LCT)

    Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子,他们不想花 ...

  9. [codevs2370]小机房的树<LCA>

    题目链接:http://codevs.cn/problem/2370/ 这题我还是做了比较久了,因为有人告诉我这是用tarjan离线做 好吧算我是蒟蒻,真心不懂tarjan怎么做,最后还是用倍增做的 ...

随机推荐

  1. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  2. [SpringBoot guides系列翻译]SpringBoot构建RESTful程序入门

    原文地址 构建一个RESTful的WebService 这个指南将带你用Spring创建一个RESTful的helloworld程序. 你将完成 在下面地址上创建一个接收http get请求的服务 h ...

  3. .NET Core:API文档

    安装:Swashbuckle.AspNetCore 启用 XML 注释:右键单击“解决方案资源管理器”中的项目,然后选择“属性”.勾选“生成”选项卡的“输出”部分下的“XML 文档文件”框. 将 Sw ...

  4. OO第一单元作业小结

    前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰 ...

  5. php 获取URL 各部分参数

    URL处理几个关键的函数parse_url.parse_str与http_build_query parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse ...

  6. IE中iframe标签显示在DIV之上的问题解决方案

    在做网页时前端时,使用IE打开时会出现标题栏DIV被遮挡PDF遮挡, 后在stackoverflow中查到是IE浏览器的问题:链接https://stackoverflow.com/questions ...

  7. js 格林威治时间转正常格式并兼容ios

    function timeChange(time) { var date = time.substr(0, 10); //年月日 var hours = time.substring(11, 13); ...

  8. Java实现"命令式"简易文本编辑器原型

    源自早先想法, 打算从界面方向做些尝试. 找到个简单文本编辑器的实现: Simple Text Editor - Java Tutorials. 原本的菜单/按钮界面如下. 包括基本功能: 新建/打开 ...

  9. .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比

    Pop分组模式和表格模式对比 关键词: 驰骋工作流引擎  表单引擎  ccflow   .net开源工作流  jflow Java工作流引擎 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 a ...

  10. NextCloud前端支持播放mov文件

    默认情况下,NextCloud网盘是不支持播放 .mov文件的. 通过修改前端代码就可以实现. 如下 1 找到 apps/files_videoplayer/js/viewer.js 文件 2 搜索 ...