LCA (Tarjan)
来源:互联网 发布:怎么看淘宝代购真假 编辑:程序博客网 时间:2024/06/16 18:38
感谢两位大佬的博客,讲得很明白。
%dalao
%dalao
模板
评测传送
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#define LL long long #define M 750009 using namespace std;int head[M],to[2*M],nxt[2*M],tt;int qhead[M],qto[2*M],qnxt[2*M],qtt,lca[2*M];int f[M];int n,m,root;bool vis[M];void add(int x,int y){ to[++tt]=y; nxt[tt]=head[x]; head[x]=tt;}void qadd(int x,int y){ qto[++qtt]=y; qnxt[qtt]=qhead[x]; qhead[x]=qtt;}int find(int x){ return f[x]==x?x:f[x]=find(f[x]); }void dfs(int x){ f[x]=x; vis[x]=1; for(int i=head[x];i;i=nxt[i]) if(!vis[to[i]]) { dfs(to[i]); f[to[i]]=x; } for(int i=qhead[x];i;i=qnxt[i]) if(vis[qto[i]]) { lca[i]=find(qto[i]); if(i%2) lca[i+1]=lca[i]; else lca[i-1]=lca[i]; }}int main(){ scanf("%d%d%d",&n,&m,&root); for(int i=1;i<n;i++) { int x,y; scanf("%d%d",&x,&y); add(x,y);add(y,x); } for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); qadd(x,y);qadd(y,x); } dfs(root); for(int i=1;i<=m;i++) printf("%d\n",lca[i*2]); return 0;}
阅读全文
0 0
- Tarjan算法(LCA)
- LCA (tarjan算法)
- LCA (Tarjan)
- 关于LCA(Tarjan+ST)
- dfs(tarjan)求lca
- Tarjan LCA
- Tarjan lca
- Tarjan LCA
- tarjan--lca
- poj Nearest Common Ancestors(LCA+Tarjan)
- tarjan 离线求 lca (专题)
- POJ 1330 LCA入门题(Tarjan)
- poj 3694 Network(tarjan + LCA)
- URAL 1471(lca tarjan算法)
- poj 3694 Network(Tarjan+LCA)
- LCA问题的Tarjan算法(POJ1330)
- POJ 3694Network (tarjan bcc + LCA)
- Network(Tarjan+缩点+LCA)
- Registry Winner(顶级系统注册表优化专家)官方破解版V7.0.12.15下载 | 无需registry winner注册码
- knockout的select的默认展示的坑
- TRPO
- HDU 1010 Tempter of the Bone(DFS+暴力+标记)
- 【LibreOJ】6177 「美团 CodeM 初赛 Round B」送外卖2 状压DP
- LCA (Tarjan)
- 无废话ExtJs 入门教程二[Hello World]
- jQuery——append等文档处理方法
- RLEH7配置samba,提示WARNING: Ignoring invalid value 'share' for parameter 'security'
- JAVA的String中intern的方法
- javascript的垃圾回收机制
- 圆锥体
- Gulp.js实践详解__基于Gulp的多页面应用实践指南
- Java多线程爬虫