离线求LCA(深搜)
来源:互联网 发布:大数据时代下的教育 编辑:程序博客网 时间:2024/06/06 08:34
交通运输线
#include<iostream>#include<cstdio>using namespace std;int hed[10005],vet[20005],val[20005],Next[20005];int dis[10005];int ull[1000005],vll[1000005];int hedq[10005],vetq[2000005],valq[2000005],Nextq[2000005];int fa[10005],ans[1000005];int tree[10005];int num;int numq;void add(int u,int v,int z){ ++num; vet[num]=v; val[num]=z; Next[num]=hed[u]; hed[u]=num;}void addq(int u,int v,int z){ ++numq; vetq[numq]=v; valq[numq]=z; Nextq[numq]=hedq[u]; hedq[u]=numq;}int find(int x){ if (fa[x]!=x) fa[x]=find(fa[x]); return fa[x];}void Union(int u,int v){ int rootu=find(u); int rootv=find(v); fa[rootv]=rootu;}void lca(int u,int fath,int hao){ fa[u]=u; for (int i=hed[u];i!=-1;i=Next[i]){ int v=vet[i]; if (v==fath) continue; dis[v]=dis[u]+val[i]; lca(v,u,hao); Union(u,v); } tree[u]=hao; for (int i=hedq[u];i!=-1;i=Nextq[i]) if (ans[valq[i]]==-1) if (tree[vetq[i]]==hao) ans[valq[i]]=find(vetq[i]);}int main(){ int t; scanf("%d",&t); while (t--){ num=0; numq=0; int n,m,c; scanf("%d%d%d",&n,&m,&c); for (int i=1;i<=n;++i){ hed[i]=-1; hedq[i]=-1; tree[i]=0; fa[i]=i; dis[i]=0; } for (int i=1;i<=c;++i) ans[i]=-1; for (int i=1;i<=m;++i){ int u,v,z; scanf("%d%d%d",&u,&v,&z); add(u,v,z); add(v,u,z); } for (int i=1;i<=c;++i){ int u,v; scanf("%d%d",&u,&v); ull[i]=u; vll[i]=v; addq(u,v,i); addq(v,u,i); } for (int i=1;i<=n;++i) if (tree[i]==0){ dis[i]=0; lca(i,0,i); } for (int i=1;i<=c;++i) if (ans[i]==-1) printf("Not connected\n"); else printf("%d\n",dis[ull[i]]+dis[vll[i]]-dis[ans[i]]-dis[ans[i]]); } return 0;}
阅读全文
0 0
- 离线求LCA(深搜)
- tarjan 离线求 lca (专题)
- (开坑)在线/离线求lca
- 离线求lca模板
- tarjan离线求lca
- bsoj1375 tarjan离线求lca
- tarjan算法 离线求LCA
- 经典离线求lca[模板]
- tajan离线求LCA 模板
- Tarjan离线算法求最近公共祖先(LCA)
- poj 1470 Closest Common Ancestors(tarjan离线求lca)
- Tarjan离线算法求最近公共祖先(LCA)
- Tarjan离线算法求最近公共祖先(LCA)
- POJ1330 Nearest Common Ancestors (tarjan离线求LCA模板)
- POJ1470 LCA(tarjan离线求最近公共祖先)
- LCA(离线算法)
- Tarjan离线算法求LCA小结
- HDU 2586 How Far Away?(Tarjan离线算法求lca)
- Codeforces 455D Serega and Fun【解法一】
- 布局管理器——帧布局
- JDK动态代理源码分析之一
- Henri Bergson and the Perception of Time
- hdu5113 剪枝搜索
- 离线求LCA(深搜)
- MySQL存储引擎总结
- 函数的分装
- 【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)
- VC++系统托盘简单实现介绍
- ListIterator双向迭代的简单操作
- 大数据学习之路-第02天-Hadoop本地模式配置&伪分布模式配置
- OpenCV: “vector”: 未声明的标识符
- 基于UDP Socket例子