2586.How far away ?

这个题以前写过在线LCA(ST)的,HDU2586.How far away ?-在线LCA(ST)

现在贴一个离线Tarjan版的

代码:

 //A-HDU2586-LCA-tarjan离线版
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<deque>
#include<iomanip>
#include<list>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
using namespace std;
typedef long long ll; const double PI=acos(-1.0);
const double eps=1e-;
const ll mod=1e9+;
const int inf=0x3f3f3f3f;
const int maxn=4e4+;
const int maxm=+;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); struct node{
int x,y;
//node(int xx,int yy){
// x=xx,y=yy;
//}node(){}
}; vector<node> edge[maxn],q[maxn];
int ans[maxn],dis[maxn],fa[maxn],vis[maxn];
int n,m,aa,bb,cc; int find(int x)//找父节点(祖先)
{
return x==fa[x]?x:fa[x]=find(fa[x]);
} void unio(int x,int y)//并查集压缩路径
{
fa[find(y)]=find(x);
} void init()//初始化
{
for(int i=;i<=n;i++){
edge[i].clear();
q[i].clear();
fa[i]=i;//初始化自己的父亲节点是自己
vis[i]=;
ans[i]=;
dis[i]=;
}
} void dfs(int x)//tarjan
{
vis[x]=;
for(int i=;i<edge[x].size();i++){
int v=edge[x][i].x;
if(!vis[v]){
dis[v]=dis[x]+edge[x][i].y;
dfs(v);
unio(x,v);
}
}
for(int i=;i<q[x].size();i++){
int v=q[x][i].x;
if(vis[v])
ans[q[x][i].y]=dis[x]+dis[v]-*dis[find(v)];
}
} int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
init();
for(int i=;i<n;i++){
scanf("%d%d%d",&aa,&bb,&cc);
//edge[aa].push_back(node(bb,cc));
//edge[bb].push_back(node(aa,cc));
edge[aa].push_back({bb,cc});
edge[bb].push_back({aa,cc});
}
for(int i=;i<=m;i++){
scanf("%d%d",&aa,&bb);
//q[aa].push_back(node(bb,i));
//q[bb].push_back(node(aa,i));
q[aa].push_back({bb,i});
q[bb].push_back({aa,i}); }
dfs();
for(int i=;i<=m;i++)
printf("%d\n",ans[i]);
}
}

溜了。

HDU 2586.How far away ?-离线LCA(Tarjan)的更多相关文章

  1. hdu 2586 How far away ? ( 离线 LCA , tarjan )

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. hihoCoder #1067 : 最近公共祖先·二 [ 离线LCA tarjan ]

    传送门: #1067 : 最近公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上上回说到,小Hi和小Ho用非常拙劣——或者说粗糙的手段山寨出了一个神奇的网站 ...

  3. poj1470 Closest Common Ancestors [ 离线LCA tarjan ]

    传送门 Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 14915   Ac ...

  4. hdu 2586 How far away?(LCA模板题+离线tarjan算法)

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. 【HDU 2586 How far away?】LCA问题 Tarjan算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:给出一棵n个节点的无根树,每条边有各自的权值.给出m个查询,对于每条查询返回节点u到v的最 ...

  6. HDU 2586 How far away ? (LCA,Tarjan, spfa)

    题意:给定N个节点一棵树,现在要求询问任意两点之间的简单路径的距离,其实也就是最短路径距离. 析:用LCA问题的Tarjan算法,利用并查集的优越性,产生把所有的点都储存下来,然后把所有的询问也储存下 ...

  7. HDU 2586 How far away ? (LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 LCA模版题. RMQ+LCA: #include <iostream> #incl ...

  8. Hdu 2586 树链剖分求LCA

    Code: #include<cstdio> #include<cstring> #include<vector> #include<algorithm> ...

  9. hdu 2586 How far away? (LCA模板)

    题意: N个点,形成一棵树,边有长度. M个询问,每个询问(a,b),询问a和b的距离 思路: 模板题,看代码.DFS预处理算出每个结点离根结点的距离. 注意: qhead[maxn],而不是qhea ...

随机推荐

  1. jsp中的session和上下文

    Session的典型应用: 防止用户非法登录到某个页面. 网上商城的购物车 保存用户登录信息 注:多个请求要用的东西放在session中,多个会话之间要用的东西放在上下文中. 如何创建session? ...

  2. thead tfoot tbody标签的使用

    这三个都是<body>元素的子标签,不常用,因为其只是对<tr>标签做了一个区分 <thread>用于包裹表格头信息 <tfoot>用于包裹表格最后一行 ...

  3. 输入的是util包下面的 时间, 接受的是java.sql.date 或者 java.util.date类型

  4. 《软件调试的艺术》学习笔记——GDB使用技巧摘要

    <软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...

  5. bzoj 1878

    莫队乱搞的第一题,(感觉这个算法初学的时候就能想到啊) 总之就是离线,然后扫一遍然后回答,用数组记录状态 但还是有一个地方不太明白 为什么要除siz?这样为什么会优化复杂度呢?? bool cmp(c ...

  6. [学习笔记]Tarjan&&欧拉回路

    本篇并不适合初学者阅读. SCC: 1.Tarjan缩点:x回溯前,dfn[x]==low[x]则缩点. 注意: ①sta,in[]标记. ②缩点之后连边可能有重边. 2.应用: SCC应用范围还是很 ...

  7. 小K的农场

    小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了 ...

  8. word公式编辑中的转义字符

    Some of the commonly used symbols:      \infty - Infinity      \leq - Less then or equal      \geq - ...

  9. tengine的安装

    tengine的安装参考此博文: http://www.cnblogs.com/zlslch/p/6035145.html (1)下载tengine的压缩包 (2)解压缩 (3)进入目录./confi ...

  10. import pymongo exceptions.ImportError: No module named pymongo

    最近用Scrapy写爬虫,将爬取的数据存入Mongodb中,使用的是pymongo这个库,但是运行的时候报错如标题所示 搜了好多网站包括stackoverflow都没有解决,后来发现自己用的是虚拟环境 ...