hdu 2586 How far away ?(LCA)
来源:互联网 发布:无线信道软件 编辑:程序博客网 时间:2024/05/10 20:05
hdu 2586 How far away ?
求树上两点u,v的最短距离
u、v到根节点距离之和减去多出来的两倍LCA(u,v)到根节点的距离
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define MAXN 40005struct tnode{ int v,d; tnode(int v=0,int d=0):v(v),d(d){}};struct qnode{ int v,id; qnode(int v=0,int id=0):v(v),id(id){}};struct qqnode{ int u,v,anc; qqnode(int u=0,int v=0):u(u),v(v){}}qq[205];vector<tnode> t[MAXN];vector<qnode> q[MAXN];int dis[MAXN],fa[MAXN];bool vis[MAXN];int n,m;void ini(){ for(int i=0;i<=n;i++) { t[i].clear(); q[i].clear(); fa[i]=i; vis[i]=false; }}int find(int x) {return x==fa[x]?x:fa[x]=find(fa[x]);}void lca(int u){ vis[u]=true; for(int i=0;i<q[u].size();i++) { int v=q[u][i].v; if(vis[v]) qq[q[u][i].id].anc=find(v); } for(int i=0;i<t[u].size();i++) { int v=t[u][i].v; if(!vis[v]) { dis[v]=dis[u]+t[u][i].d; lca(v); fa[v]=find(u); } }}int main(){ int cas; scanf("%d",&cas); while(cas--) { scanf("%d%d",&n,&m); ini(); int u,v,d; for(int i=0;i<n-1;i++) { scanf("%d%d%d",&u,&v,&d); t[u].push_back(tnode(v,d)); t[v].push_back(tnode(u,d)); } for(int i=0;i<m;i++) { scanf("%d%d",&u,&v); qq[i]=qqnode(u,v); q[u].push_back(qnode(v,i)); q[v].push_back(qnode(u,i)); } dis[1]=0; lca(1); for(int i=0;i<m;i++) printf("%d\n",dis[qq[i].u]+dis[qq[i].v]-2*dis[qq[i].anc]); } return 0;}
0 0
- HDU 2586 How far away? LCA模板
- HDU 2586 - How far away ? (LCA)
- hdu 2586 How far away ?(LCA)
- HDU--2586--How far away ?【LCA】
- HDU 2586 How far away ?(LCA)
- hdu 2586 How far away ?(LCA)
- hdu 2586 How far away ?(LCA)
- HDU - 2586 How far away ?(LCA)
- How far away ? (hdu 2586 LCA)
- hdu 2586 How far away ?(LCA)
- HDU---2586-How far away(LCA)
- HDU 2586 How far away ?(LCA)
- HDU 2586How far away ?(LCA)
- HDU 2586 How far away ?【LCA】
- hdu-2586 How far away ?(LCA)
- HDU 2586 How far away ?(lca)
- hdu 2586 How far away ?【rmq+lca】
- HDU 2586 How far away ? 离线LCA
- selenium+Java等待模式(显式等待+隐式等待)
- 指针与数组的“爱恨情仇”
- sdut 面向对象程序设计上机练习十二(运算符重载)
- 求10000以内完美数
- 文件操作
- hdu 2586 How far away ?(LCA)
- [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新完全解读
- 【1】第一个安卓程序
- wxPython启动程序进度条
- 旅店管理系统(uml)
- Zoj 3502 Contest 状态压缩
- 白话经典算法系列之二 直接插入排序的三种实现
- wxPython进度条
- SQL Server 2008 数据库同步的两种方式 (发布、订阅)