|poj 1986|LCA|Distance Queries
来源:互联网 发布:linux如何运行脚本 编辑:程序博客网 时间:2024/05/23 07:23
poj1986
LCA模板题
#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define ms(i, j) memset(i, j, sizeof i)using namespace std;const int MAXN = 40000 + 5, logs = 22;struct edge{ int x, y, v;}ed[MAXN*2];int en;int n, m, deep[MAXN], far[MAXN], pre[MAXN][logs+1];vector<int> G[MAXN];void dfs(int x, int p){ pre[x][0] = p; for (int i=1;i<=logs;i++) pre[x][i] = pre[pre[x][i-1]][i-1]; for (int i=0;i<G[x].size();i++) { int v = ed[G[x][i]].y; if (v!=p) { deep[v] = deep[x] + 1; far[v] = far[x] + ed[G[x][i]].v; dfs(v, x); } }}int lca(int a, int b){ if (deep[a]>deep[b]) swap(a,b); for (int i=logs;i>=0;i--) if (deep[pre[b][i]]>=deep[a]) b = pre[b][i]; if (a==b) return a; for (int i=logs;i>=0;i--) if (pre[a][i]!=pre[b][i]) a = pre[a][i], b = pre[b][i]; return pre[a][0];}void addedge(int x, int y, int v){ en++, ed[en].x = x, ed[en].y = y, ed[en].v = v, G[x].push_back(en); en++, ed[en].x = y, ed[en].y = x, ed[en].v = v, G[y].push_back(en); }void init(){ for (int i=1;i<=n;i++) { G[i].clear(); deep[i] = far[i] = 0; for (int j=0;j<=logs;j++) pre[i][j] = 0; } en = 0; for (int i=1;i<=m;i++) { int x, y, v; char str[20]; scanf("%d%d%d%s", &x, &y ,&v, str); addedge(x, y, v); }}void solve(){ dfs(1, 0); int q; scanf("%d", &q); for (int i=1;i<=q;i++) { int x, y; scanf("%d%d", &x, &y); printf("%d\n", far[x]+far[y]-2*far[lca(x,y)]); }}int main(){ while (scanf("%d%d", &n, &m)==2) { init(); solve(); } return 0;}
0 0
- POJ 1986 Distance Queries [LCA]
- poj 1986 Distance Queries LCA
- POJ 1986 Distance Queries(LCA)
- poj 1986 Distance Queries (LCA)
- POJ 1986 Distance Queries LCA
- [POJ 1986] Distance Queries (LCA)
- Distance Queries - POJ 1986 LCA
- poj 1986 Distance Queries(LCA)
- POJ 1986 Distance Queries【LCA】
- Poj 1986 Distance Queries【LCA】
- POJ 1986 Distance Queries 【LCA】
- |poj 1986|LCA|Distance Queries
- POJ 1986 Distance Queries LCA和RMQ
- POJ 1986 Distance Queries(在线LCA)
- POJ--1986--Distance Queries--LCA-RMQ
- 【POJ】 1986 Distance Queries 离线LCA
- POJ 1986 Distance Queries(离线LCA)
- POJ - 1986 Distance Queries(LCA离线)
- 解决Excel里面另存为TXT后,多了很多引号的问题。
- 腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
- SAP HANA SQL GROUP BY / ORDER BY / OVER / CASE
- csu 1811 Tree Intersection 2016湖南省赛 I
- 算法学习笔记--NP完全问题
- |poj 1986|LCA|Distance Queries
- pico-ctf-2013 overflow-2
- 为wordpress安装主题时如何跳过对ftp服务器的验证
- Find Peak Element
- 0426-CSS三大特性之继承性
- MD5加密算法简单实现
- hibernate:XXX is not mapped问题
- PAT 乙等 1018 C语言
- Learning to Compare Image Patches via Convolutional Neural Networks