HDU 2586
来源:互联网 发布:一苇渡江网络培训 编辑:程序博客网 时间:2024/05/03 19:14
O 点击打开链接 离线做法,倍增法还不会
#include<stdio.h>#include<string.h>#include<stack>#include<string>#include<math.h>#include<queue>#include<set>#include<algorithm>#include<iostream>#include<vector>#include<map>using namespace std;#define LL long long#define inf 199999999#define N 40010int ehead[N],qhead[N],dis[N],f[N],ans[220];bool vis[N];struct node{ int v,next,w;}edge[N*2];struct Query{ int num,v,next;}query[220];int e,qe;void adde(int u,int v,int w){ edge[e].v=v; edge[e].w=w; edge[e].next=ehead[u]; ehead[u]=e++;}void addq(int u,int v,int num){query[qe].v=v;query[qe].num=num;query[qe].next=qhead[u];qhead[u]=qe++;}int find(int x){if(x!=f[x]) f[x]=find(f[x]);return f[x];}void Union(int u,int v){int fu=find(u);int fv=find(v);if(fv!=fu) f[fv]=fu;}void tarjan(int u,int d){ int i,v; vis[u]=1;dis[u]=d; for(i=ehead[u];i!=-1;i=edge[i].next) { v=edge[i].v; if(vis[v]) continue; tarjan(v,d+edge[i].w); Union(u,v); } for(i=qhead[u];i!=-1;i=query[i].next) { v=query[i].v; if(vis[v]) ans[query[i].num]=dis[u]+dis[v]-2*dis[find(v)]; }}int main(){ int i,j,n,m,t,u,v,w; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); qe=e=0;memset(dis,0,sizeof(dis));memset(vis,0,sizeof(vis));memset(ehead,-1,sizeof(ehead));memset(qhead,-1,sizeof(qhead));for(i=1;i<=n;i++)f[i]=i; for(i=1;i<n;i++) { scanf("%d%d%d",&u,&v,&w); adde(u,v,w); adde(v,u,w); } for(i=1;i<=m;i++){scanf("%d%d",&u,&v);addq(u,v,i);addq(v,u,i);}tarjan(1,0);for(i=1;i<=m;i++) printf("%d\n",ans[i]); } return 0;}
0 0
- HDU 2586
- HDU 2586
- HDU 2586
- HDU 2586
- HDU 2586
- hdu 2586
- HDU 2586
- HDU 2586
- hdu 2586
- 周赛 HDU 2874 HDU 2586 LCA
- HDU 5266 HDU 2586 LCA问题
- hdu 2586 Tarjan离线
- hdu 2586的技巧
- HDU 2586 LCA
- HDU - 2586 LCA
- HDU 2586 LCA
- 【HDU 2586】LCA模板
- HDU 2586 (Tarjan)
- Bootstrap CSS——Well组件
- POSIX
- uva 7008 The 2014 ACM-ICPC Asia Mudanjiang Regional Contest 【部分题解】
- at android.content.res.Resources$NotFoundException:String resoure ID #0x5
- cs50 算法 程序设计 笔记(1)
- HDU 2586
- poj 2065 SETI 【高斯消元 + 快速幂 解模线性方程组】
- 通过异常处理错误
- 数据结构例程——稀疏矩阵的十字链表表示
- C++输入输出
- shell常用命令
- Java接口的使用
- 平衡二叉树(剑指offer)知识迁移能力
- java 日志总结