BZOJ 1602 牧场行走
直接写一波Lca就好了
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=;
int n,m,x,y,z,ans=,tot=,dis[maxn],last[maxn],dep[maxn],p[maxn][];
struct edge{int to,pre,dis;}e[maxn<<]; void read(int &k){
k=; int f=; char c=getchar();
while (c<''||c>'')c=='-'&&(f=-),c=getchar();
while (''<=c&&c<='')k=k*+c-'',c=getchar();
k*=f;
}
void add(int x,int y,int z){e[++tot].to=y;e[tot].pre=last[x];e[tot].dis=z;last[x]=tot;}
void dfs(int u,int fa){
dep[u]=dep[fa]+; p[u][]=fa;
for (int i=;i<=log2(dep[u]);i++) p[u][i]=p[p[u][i-]][i-];
for (int i=last[u],to=e[i].to;i;i=e[i].pre,to=e[i].to)
if (to!=fa) dis[to]=dis[u]+e[i].dis,dfs(to,u);
}
int lca(int x,int y){
if (dep[x]<dep[y]) swap(x,y);
if (dep[x]>dep[y])
for (int i=log2(dep[x]-dep[y]+);i>=,dep[x]!=dep[y];i--)
if (dep[p[x][i]]>=dep[y]) x=p[x][i];
if (x==y) return x;
for (int i=log2(dep[x]);i>=;i--)
if (p[x][i]!=p[y][i]) x=p[x][i],y=p[y][i];
return p[x][];
}
int main(){
read(n); read(m);
for (int i=;i<n;i++){
read(x); read(y); read(z);
add(x,y,z); add(y,x,z);
}
dfs(,);
for (int i=;i<=m;i++) read(x),read(y),printf("%d\n",dis[x]+dis[y]-*dis[lca(x,y)]);
return ;
}
BZOJ 1602 牧场行走的更多相关文章
- bzoj 1602 [Usaco2008 Oct]牧场行走(LCA模板)
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 379 Solved: 216[Submit][Sta ...
- BZOJ 1602: [Usaco2008 Oct]牧场行走( 最短路 )
一棵树..或许用LCA比较好吧...但是我懒...写了个dijkstra也过了.. ---------------------------------------------------------- ...
- 1602: [Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1211 Solved: 616 [Submit][ ...
- BZOJ1602: [Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1084 Solved: 556[Submit][St ...
- 【bzoj1602】[Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1793 Solved: 935[Submit][St ...
- 树讲解——牧场行走( lca )
大视野 1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1947 Solved: 1021[Sub ...
- 【BZOJ】1602: [Usaco2008 Oct]牧场行走(lca)
http://www.lydsy.com/JudgeOnline/problem.php?id=1602 一开始以为直接暴力最短路,但是n<=1000, q<=1000可能会tle. 显然 ...
- BZOJ——1602: [Usaco2008 Oct]牧场行走 || 洛谷—— P2912 [USACO08OCT]牧场散步Pasture Walking
http://www.lydsy.com/JudgeOnline/problem.php?id=1602 || https://www.luogu.org/problem/show?pid=2912 ...
- BZOJ 1602: [Usaco2008 Oct]牧场行走 倍增裸题
Description N头牛(2<=n<=1000)别人被标记为1到n,在同样被标记1到n的n块土地上吃草,第i头牛在第i块牧场吃草. 这n块土地被n-1条边连接. 奶牛可以在边上行走, ...
随机推荐
- eclipse和jdk版本对应问题
日常开发中,32位eclipse要用32位jdk,64位则必须要用64位jdk,否则启动时就会报错,load jvm.dll失败,昨天又遇到了这个问题.更换对应的版本之后就好了.tomcat等应用也有 ...
- 自定义Git(转载)
转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137621280731 ...
- Unity 图形学 基础知识总结
1. 渲染流水线 三大块:应用阶段,几何阶段,光栅化阶段 渲染图元 顶点信息 GPU流水线 顶点数据=> 顶点着色器 ...
- @RequestParam 和 @RequestBody 接受的时间格式
这两个接受的时间格式不相同 首先看一下他们的区别 @RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容.(Ht ...
- Netty(2) - HelloWorld
Netty:作用场景. 1)Netty可以基于socket实现远程过程调用(RPC). 2)Netty可以基于WebSocket实现长连接. 3)Netty可以实现Http的服务器,类似于Jetty, ...
- hdu---3177 Crixalis's Equipment 根据 两个元素 之间的权衡进行排序
Crixalis's Equipment Problem Description Crixalis - Sand King used to be a giant scorpion(蝎子) in the ...
- HDU 3007 最小圆覆盖 计算几何
思路: 随机增量法 (好吧这数据范围并不用) //By SiriusRen #include <cmath> #include <cstdio> #include <al ...
- 【知识总结】回文自动机(Palindrome_Automaton)
参考资料:Palindromic Tree--回文树[处理一类回文串问题的强力工具](请注意,其中似乎有一些错误) 回文自动机似乎和回文树是同一个东西qwq? 回文自动机(PAM)是一种处理回文串的工 ...
- 【知识总结】后缀数组(Suffix_Array)
又是一个学了n遍还没学会的算法-- 后缀数组是一种常用的处理字符串问题的数据结构,主要由\(sa\)和\(rank\)两个数组组成.以下给出一些定义: \(str\)表示处理的字符串,长度为\(len ...
- ACM_Alien And Password
Alien And Password Time Limit: 2000/1000ms (Java/Others) Problem Description: Alien Fred wants to de ...