const int maxn = 4e4 + ;
int T, n, m;
int f[maxn], vis[maxn], dis[maxn], ans[maxn];
vector<P> vc[maxn];
vector<int> query[maxn], id[maxn]; inline int getf(int v) { return v == f[v] ? v : f[v] = getf(f[v]); } inline void Tarjan(int cur) {
vis[cur] = ; for (auto son : vc[cur]) {
if (vis[son.first]) continue; dis[son.first] = dis[cur] + son.second;
Tarjan(son.first);
f[son.first] = cur;
} vis[cur] = ; for (int i = ; i < query[cur].size(); i++) {
int v = query[cur][i], t = id[cur][i]; if (vis[v] == ) {
int lca = getf(v);
ans[t] = dis[cur] + dis[v] - * dis[lca];
}
}
} int main() {
for (read(T); T; T--) {
read(n), read(m); rep(i, , n) {
vc[i].clear(), query[i].clear(), id[i].clear();
f[i] = i, vis[i] = ;
} rep(i, , n - ) {
int u, v, cost;
read(u), read(v), read(cost);
vc[u].push_back({v, cost});
vc[v].push_back({u, cost});
} auto Add_Query = [](int u, int v, int i) {
query[u].push_back(v);
id[u].push_back(i);
}; rep(i, , m) {
int u, v;
read(u), read(v);
Add_Query(u, v, i);
if(u != v) Add_Query(v, u, i);
} Tarjan(); rep(i, , m)
writeln(ans[i]);
}
return ;
}

HDU2586(tarjanLCA板子)的更多相关文章

  1. Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)

    目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...

  2. [板子]最小费用最大流(Dijkstra增广)

    最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...

  3. [板子]ISAP

    ISAP求最大流,敲了一发板子,无压行,教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algori ...

  4. [板子]倍增LCA

    倍增LCA板子,没有压行,可读性应该还可以.转载请随意. #include <cstdio> #include <cstring> #include <algorithm ...

  5. UP Board 人若有大胆,板子就很惨:首次上电开机失败

    前言 原创文章,转载引用务必注明链接. 注意:拍照自带抖动功能,画质大家凑合着看.冬日天气干燥,手触摸板子前建议流水洗手或者握持大体积导电体将静电放走. 本文使用Markdown写成,为获得更好的阅读 ...

  6. orpsocv2 从ROM(bootrom)启动分析--以atlys板子的启动为例子

    1 复位后的启动地址 1) 复位后,启动地址在or1200_defines.v最后宏定义,atlys板子的目录:orpsocv2\boards\xilinx\atlys\rtl\verilog\inc ...

  7. Lattice FPGA 板子 调试笔记

    最近在调试LATTICE  FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17E ...

  8. 【图像处理】【SEED-VPM】1.板子基本操作流程

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  9. NFS 网络文件系统挂载在A8板子上

    我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...

随机推荐

  1. C#Unicode和Utf-8

    Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编码.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言 ...

  2. 20170224 SE11删除数据

    目的,批量删除错误条目.1.SE11 通过条件找到目标数据,并选中: 2./H 进入debug,回车,更改值 OK_CODE  =  DEL5 F8 运行则出现删除框,

  3. atexit函数的使用【学习笔记】

    #include "apue.h" static void my_exit1(void); static void my_exit2(void); int main(void) { ...

  4. jQuery常用插件大全(9)ResponsiveSlides插件

    ResponsiveSlides.js是一个展示同一容器内图片的轻量级响应式jQuery幻灯片插件(tiny responsive slideshow jQuery plugin).它支持包括IE6在 ...

  5. java性能时间与空间消耗

    Java性能时间与空间消耗 一.减少时间消耗 标准代码优化 (1) 将循环不变量的计算移出循环 例如:for (int i=0; i<size()*2; i++) { ... } ------& ...

  6. Javascript版五子棋

    Javascript版五子棋,无禁手.欢迎提出算法的改进意见.2. [代码]HTML     <!DOCTYPE html><html>    <head>    ...

  7. 最大网络流 EK 算法

    网络流是什么类型的问题,看一道题目你就知道了 点击打开链接 . 默认具备图论的基本知识,网络流概念比较多,先看看书熟悉一下那些概念.比较好!一个寄出的网络最大流.EK算法写的. 这是一幅网络,求S   ...

  8. codeforces 673A A. Bear and Game(水题)

    题目链接: A. Bear and Game time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. Android 如何进入充电模式

    /************************************************************************* * Android 如何进入充电模式 * 说明: ...

  10. SPOJ:Elegant Permuted Sum(贪心)

    Special Thanks: Jane Alam Jan*At moment in University of Texas at San Antonio - USA You will be give ...