博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1832 LCA
阅读量:5269 次
发布时间:2019-06-14

本文共 1826 字,大约阅读时间需要 6 分钟。

思路:好裸的LCA呀。

#include
#define LL long long#define fi first#define se second#define mk make_pair#define PII pair
#define y1 skldjfskldjg#define y2 skldfjsklejgusing namespace std;const int N = 5e5 + 7;const int M = 1e7 + 7;const int inf = 0x3f3f3f3f;const LL INF = 0x3f3f3f3f3f3f3f3f;const int mod = 1000000007;int n, m, f[N][21], depth[N];vector
edge[N];void dfs(int u, int fa, int deep) { depth[u] = deep; f[u][0] = fa; for(int i = 1; i < 21; i++) f[u][i] = f[f[u][i - 1]][i - 1]; for(int i = 0; i < edge[u].size(); i++) { int v = edge[u][i]; if(v == fa) continue; dfs(v, u, deep + 1); }}PII cal(int u, int v) { if(depth[u] < depth[v]) swap(u, v); int ans = 0; for(int i = 20; i >= 0; i--) { if(!f[u][i]) continue; if(depth[f[u][i]] < depth[v]) continue; u = f[u][i]; ans += (1 << i); } if(u == v) return mk(u, ans); for(int i = 20; i >= 0; i--) { if(!f[u][i] || !f[v][i]) continue; if(f[u][i] == f[v][i]) continue; u = f[u][i]; v = f[v][i]; ans += 2 * (1 << i); } return mk(f[u][0], ans + 2);}int main() { scanf("%d%d", &n, &m); for(int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); edge[u].push_back(v); edge[v].push_back(u); } dfs(1, 0, 0); while(m--) { int x, y, z; scanf("%d%d%d", &x, &y, &z); PII ans = mk(inf, 0); PII t1 = cal(x, y), t2 = cal(x, z), t3 = cal(y, z); ans = min(ans, mk(t1.se + cal(t1.fi, z).se, t1.fi)); ans = min(ans, mk(t2.se + cal(t2.fi, y).se, t2.fi)); ans = min(ans, mk(t3.se + cal(t3.fi, x).se, t3.fi)); printf("%d %d\n", ans.se, ans.fi); } return 0;}/**/

 

转载于:https://www.cnblogs.com/CJLHY/p/9619769.html

你可能感兴趣的文章
android开发常用地址
查看>>
SSH框架整合配置所需JAR包(SSH整合)
查看>>
PHP函数
查看>>
html5多媒体Video/Audio
查看>>
如何安装windows7
查看>>
[主席树]HDOJ4348 To the moon
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
mysql 主从库同步
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
ABP入门系列(6)——定义导航菜单
查看>>
排序sort (一)
查看>>
Intent应用
查看>>