HDU2586(tarjanLCA板子)
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板子)的更多相关文章
- Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)
目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...
- [板子]最小费用最大流(Dijkstra增广)
最小费用最大流板子,没有压行.利用重标号让边权非负,用Dijkstra进行增广,在理论和实际上都比SPFA增广快得多.教程略去.转载请随意. #include <cstdio> #incl ...
- [板子]ISAP
ISAP求最大流,敲了一发板子,无压行,教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algori ...
- [板子]倍增LCA
倍增LCA板子,没有压行,可读性应该还可以.转载请随意. #include <cstdio> #include <cstring> #include <algorithm ...
- UP Board 人若有大胆,板子就很惨:首次上电开机失败
前言 原创文章,转载引用务必注明链接. 注意:拍照自带抖动功能,画质大家凑合着看.冬日天气干燥,手触摸板子前建议流水洗手或者握持大体积导电体将静电放走. 本文使用Markdown写成,为获得更好的阅读 ...
- orpsocv2 从ROM(bootrom)启动分析--以atlys板子的启动为例子
1 复位后的启动地址 1) 复位后,启动地址在or1200_defines.v最后宏定义,atlys板子的目录:orpsocv2\boards\xilinx\atlys\rtl\verilog\inc ...
- Lattice FPGA 板子 调试笔记
最近在调试LATTICE FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17E ...
- 【图像处理】【SEED-VPM】1.板子基本操作流程
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- NFS 网络文件系统挂载在A8板子上
我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...
随机推荐
- angularjs中常见错误
使用angularjs时间不是非常长,理解不够透彻.但为刚開始学习的人还是能够帮助点的. 1.回调函数. . ...-->切记它是异步的,出现莫名其妙的问题记得查看一下 2.内存泄露. .... ...
- Android Menu开源项目整合工程
本实例整合了关于Android Menu的优秀开源代码,方便有需要用到Menu开源项目的小伙伴使用. 一.整合的项目有: SlidingMenu:https://github.com/jfeinste ...
- 【项目发起】千元组装一台大型3D打印机全教程(一)前言
前言 最近又碰到了大尺寸模型打样的需求,我这台17cm直径的kossel mini就捉襟见肘了.怎么办呢,这个时候kossel的好就体现出来了,随意扩展,那么就自己做个kossel-max吧.为了向前 ...
- C#令人迷惑的DateTime:世界标准时间还是本地时间?
先来看一段代码: 复制内容到剪贴板程序代码 DateTime time = DateTime.Parse("2013-07-05 00:00:00");Console.WriteL ...
- sanic官方文档解析之websocket(网络套接字)和handle decorators(处理程序装饰器)
1,websocket(网络套接字) 在websocket上Sanic提供了一种简单使用的抽象化,来设置websocket(网络套接字) from sanic import Sanic from sa ...
- 3144: [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1526 Solved: 827[Submit][Status] ...
- Kills all phantomjs instances, disregard of their origin python关闭进程
Python/Linux quit() does not terminate PhantomJS process · Issue #767 · SeleniumHQ/selenium https:// ...
- rails用generate为两个模型创建has_and_belongs_to_many中间表
假设 teachers和students具备many-to-many的关系,那么需要一个Join 表,has_and_belongs_to_many默认该表名字为teachers_students,这 ...
- redis03----集合 set 相关命令
集合 set 相关命令 集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下 ...
- HDU2089 不要62 —— 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Time Limit: 1000/1000 MS (Java/Others) M ...