bzoj1602[Usaco2008 Oct]牧场行走(lca模版)
来源:互联网 发布:u盘必装软件 编辑:程序博客网 时间:2024/05/16 14:28
Lca裸题
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e3+10;int dep[N],f[N][10],dis[N],n,q,len=0,last[N];struct Edge{int to,next,val;Edge(int to=0,int next=0,int val=0):to(to),next(next),val(val){}}e[N<<1];void add_edge(int u,int v,int w){e[++len]=Edge(v,last[u],w);last[u]=len;}void dfs(int u,int fa){ for(int i=1;i<=9;i++) { if(dep[u]<(1<<i))break; f[u][i]=f[f[u][i-1]][i-1]; } for(int i=last[u];i;i=e[i].next){ int id=e[i].to; if(id==fa)continue; dep[id]=dep[u]+1;dis[id]=dis[u]+e[i].val; f[id][0]=u; dfs(id,u); }}int lca(int x,int y){ if(dep[x]<dep[y])swap(x,y); int d=dep[x]-dep[y]; for(int i=0;i<=9;i++){ if(d&(1<<i))x=f[x][i]; } for(int i=9;i+1;i--) { if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i]; } if(x==y)return x; else return f[x][0];}int main(){ scanf("%d%d",&n,&q); for(int u,v,w,i=1;i<n;i++) { scanf("%d%d%d",&u,&v,&w); add_edge(u,v,w);add_edge(v,u,w); } dfs(1,0); for(int x,y,i=1;i<=q;i++) { scanf("%d%d",&x,&y); printf("%d\n",dis[x]+dis[y]-2*dis[lca(x,y)]); } return 0;}
阅读全文
0 0
- bzoj1602[Usaco2008 Oct]牧场行走(lca模版)
- [BZOJ1602][Usaco2008 Oct]牧场行走(LCA)
- [Bzoj1602][Usaco2008 Oct]牧场行走
- bzoj1602 [Usaco2008 Oct]牧场行走
- [BZOJ1602][Usaco2008 Oct]牧场行走
- bzoj1602 [Usaco2008 Oct]牧场行走
- BZOJ1602: [Usaco2008 Oct]牧场行走
- BZOJ1602: [Usaco2008 Oct]牧场行走
- bzoj1602 [Usaco2008 Oct]牧场行走
- BZOJ1602 [Usaco2008 Oct]牧场行走
- bzoj1602: [Usaco2008 Oct]牧场行走 暴力dfs
- 【bzoj1602】【Usaco2008 Oct】牧场行走 (暴力) 题解&代码
- 【bzoj1602】牧场行走 lca
- 1602: [Usaco2008 Oct]牧场行走|Lca
- [Usaco2008 Oct]牧场行走
- BZOJ 1602 Usaco2008 Oct 牧场行走 倍增LCA
- bzoj 1602 [Usaco2008 Oct]牧场行走(LCA模板)
- bzoj 1602: [Usaco2008 Oct]牧场行走(暴力LCA)
- 简单程序——年月日的判断
- 最多约束问题
- AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析
- 重载双目/单目运算符
- Swift 判断是否为<null>
- bzoj1602[Usaco2008 Oct]牧场行走(lca模版)
- HDU 4720(计算几何+最小圆覆盖)
- php实现限制文件下载速度
- 懒人开发之 NiceDialog
- 刷题五
- C++引用
- C#HttpClient返回乱码的解决方案
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- csi摄像头 raspistill常用命令