题意:

城市 道路  没有环 不一定连通的树 求两城市的最短距离 设想一下就是很多小树  那好办

思路:

lca离线算法 然后有个技巧就是 每次我们tarjan一棵树不是最后树的节点都访问过并且孩子全能找到老爸嘛 那么我们只要做做做做 做到全部的城市都访问过了  就行了 反正你做这颗小树的时候又不会影响到其他树的

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m;
const int N = ;
const int M = ;
int f[N],Next[*N],va[*N],wi[*N],Head[N];
int vis[N];
int nex[*M],to[*M],id[M],head[N],ans[M];
int find(int x)
{
if(x!=f[x])f[x]=find(f[x]);
return f[x];
}
int len,dis[N],l;
void add(int u,int v,int w)
{
va[len]=v;
wi[len]=w;
Next[len]=Head[u];
Head[u]=len++;
}
void add_x(int u,int v)
{
to[l]=v; nex[l]=head[u];
head[u]=l++;
} void lca(int u,int fa)
{
f[u]=u;
for(int i=Head[u];i!=-;i=Next[i])
{int v=va[i],w=wi[i];
if(v!=fa){ dis[v]=dis[u]+w;
lca(v,u);
f[v]=u;
}
}
vis[u]=;
for(int i=head[u];i!=-;i=nex[i])
{
int v=to[i];
if(vis[v])
{//puts("sadasd");
ans[i/]=find(v);
}
} } int main()
{
int k;
while(~scanf("%d%d%d",&n,&m,&k))
{
len=l=;
memset(Head,-,sizeof Head);
memset(head,-,sizeof head);
for(int i=;i<m;i++)
{ int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
dis[]=;
for(int i=;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
id[i]=u;
add_x(u,v);
add_x(v,u);
} memset(vis,,sizeof vis);
memset(f,,sizeof f);
memset(ans,-,sizeof ans);
for(int i=;i<=n;i++)if(vis[i]==)lca(i,);
for(int i=;i<l;i+=)
{ int a,b,c;
a=to[i];
b=id[i/]; if(find(a)!=find(b))puts("Not connected");
else {c=ans[i/]; printf("%d\n",dis[a]+dis[b]-*dis[c]);}
}
}
}

Hdu 2874 Connections between cities的更多相关文章

  1. hdu 2874 Connections between cities [LCA] (lca->rmq)

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  2. HDU 2874 Connections between cities(LCA Tarjan)

    Connections between cities [题目链接]Connections between cities [题目类型]LCA Tarjan &题意: 输入一个森林,总节点不超过N ...

  3. hdu 2874 Connections between cities 带权lca判是否联通

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  4. hdu 2874 Connections between cities(st&rmq LCA)

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  5. hdu 2874 Connections between cities (并查集+LCA)

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  6. HDU 2874 Connections between cities(LCA)

    题目链接 Connections between cities LCA的模板题啦. #include <bits/stdc++.h> using namespace std; #defin ...

  7. HDU——2874 Connections between cities

    Connections between cities Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  8. HDU 2874 Connections between cities (LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意是给你n个点,m条边(无向),q个询问.接下来m行,每行两个点一个边权,而且这个图不能有环路 ...

  9. HDU 2874 Connections between cities(LCA离线算法实现)

    http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意: 求两个城市之间的距离. 思路: LCA题,注意原图可能不连通. 如果不了解离线算法的话,可以看我之 ...

  10. HDU 2874 Connections between cities(LCA(离线、在线)求树上距离+森林)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 题目大意:给出n个点,m条边,q个询问,每次询问(u,v)的最短距离,若(u,v)不连通即不在同 ...

随机推荐

  1. 适配器模式 java

    结构模式:将类和对象结合在一起构成更大的结构,就像是搭积木. 1.适配器模式 源接口---适配器--目标接口 2.使用场景: 现在你有一个很古老的类,里面的一些方法很有用,你如何使用这些方法? 当然你 ...

  2. 基础排序算法之并归排序(Merge Sort)

    并归排序是学习分治法 (Merge Sort) 的好例子.而且它相对于选择,插入,冒泡排序来说,算法性能有一定提升.我首先会描述要解决的问题,并给出一个并归排序的例子.之后是算法的思路以及给出伪代码. ...

  3. SRM 410(1-250pt, 1-500pt)

    DIV1 250pt 题意:对于图G,有一些点和边,点中有一些点称为特殊点.问在所有特殊点最终不能处于同一个联通块的条件下,最多能给在图G中添加多少条边. 解法:首先,对于图G,处理出它有哪些联通块, ...

  4. struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法

    详情查看http://zone.wooyun.org/content/5159 官方漏洞说明 http://struts.apache.org/release/2.3.x/docs/s2-016.ht ...

  5. Pick-up sticks - POJ 2653 (线段相交)

    题目大意:有一个木棒,按照顺序摆放,求出去上面没有被别的木棍压着的木棍.....   分析:可以维护一个队列,如果木棍没有被压着就入队列,如果判断被压着,就让那个压着的出队列,最后把这个木棍放进队列, ...

  6. ecshop获取浏览器各个版本

    <?php /** * 获得浏览器名称和版本 * * @access public * @return string */ function get_user_browser() { if (e ...

  7. winfrom 底层类 验证码 分类: C# 2014-12-17 11:18 258人阅读 评论(0) 收藏

    效果图: 底层类: /// <summary>         /// 生成验证码         /// </summary>         /// <param n ...

  8. Media Queries 自适应布局展示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. [Angular 2] Keynote: Lazy Routing -- NGCONF

    So How to do lazy loading for router in Angular 2. The nomarl way to write a router in Angular 2: Yo ...

  10. cmake 手册系列

    http://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.html