经典离线求lca[模板]
来源:互联网 发布:js判断滚动条是否存在 编辑:程序博客网 时间:2024/06/06 05:21
#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#define maxn 600000#define maxm 1200000#define maxq 600000using namespace std;inline void read(int &x) { char ch; bool flag = false; for (ch = getchar(); !isdigit(ch); ch = getchar())if (ch == '-') flag = true; for (x = 0; isdigit(ch); x = x * 10 + ch - '0', ch = getchar()); x = flag ? -x : x;}inline void write(int x) { static const int maxlen = 100; static char s[maxlen]; if (x < 0) { putchar('-'); x = -x;} if (!x) { putchar('0'); return; } int len = 0; for (; x; x /= 10) s[len++] = x % 10 + '0'; for (int i = len - 1; i >= 0; --i) putchar(s[i]);}int n,q;int root;int pre[maxm],now[maxn],son[maxm],tot;void build(int a,int b){pre[++tot]=now[a];now[a]=tot;son[tot]=b;}bool vis[maxn];int Fa[maxn];struct zy{vector<int> ed,id;}que[maxn];int ans[maxn];int get(int x){if (Fa[x]!=x) return Fa[x]=get(Fa[x]);return x;}void dfs(int x,int fa){for (int p=now[x];p;p=pre[p]) if (son [p]!=fa) { dfs(son[p],x); Fa[son[p]]=x; }vis[x]=1;for (int i=0;i<que[x].ed.size();i++) if (vis[ que[x].ed[i] ] ) { ans[ que[x].id[i] ]=get( que[x].ed[i] ); //printf("%d %d\n",x,que[x].ed[i]); }}int main(){ read(n); read(q); read(root); for (int i=1;i<n;i++) { int a,b,c; read(a); read(b); build(a,b); build(b,a); } for (int i=1;i<=q;i++) { int a,b; read(a); read(b); que[a].ed.push_back(b); que[a].id.push_back(i); que[b].ed.push_back(a); que[b].id.push_back(i); } for (int i=1;i<=n;i++) Fa[i]=i; dfs(root,root); for (int i=1;i<=q;i++) printf("%d\n",ans[i]); return 0;}
阅读全文
0 0
- 经典离线求lca[模板]
- 离线求lca模板
- tajan离线求LCA 模板
- POJ1330 Nearest Common Ancestors (tarjan离线求LCA模板)
- tarjan离线求lca
- lca 离线模板
- lca 离线tarjan模板
- bsoj1375 tarjan离线求lca
- tarjan算法 离线求LCA
- 离线求LCA(深搜)
- LCA离线+在线+hdu2586(模板)
- LCA离线tarjan算法模板
- LCA离线tarjan算法模板
- Tarjan离线算法求LCA小结
- tarjan 离线求 lca (专题)
- (开坑)在线/离线求lca
- lca离线算法模板(poj1330验证)
- poj 1330lca模板题离线算法
- Oracle笛卡尔积与连接查询
- mac 下安装 ActiveMQ
- 八大排序算法之-归并排序 java代码
- 梯度
- sklearn中文文档——1.1. 普通线性模型
- 经典离线求lca[模板]
- Maven的安装配置及初次创建项目与java单元测试工具JUnit
- WebGIS学习(一)——开篇谈WEBGIS
- show and tell,让机器看图说话(show attention and tell)
- 自定义view
- 三、Java运行环境之 cent os安装nginx
- 我的小小学习笔记(6)之C++-----函数的重载
- 二分查找(binary search)
- forEach的使用方法