bzoj1602
题解:
简单lca
然而我调了半小时QAQ
lca的时候要判断0
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
int ne[N],l,sd[N],f[][N],num[N],tot,fi[N],zz[N],sl[N],jin[N],n,m,x,y,z,chu[N];
void jb(int x,int y,int z)
{
ne[++tot]=fi[x];
fi[x]=tot;
zz[tot]=y;
sl[tot]=z;
}
void dfs(int x,int y)
{
jin[x]=++l;
f[][x]=y;
for (int i=fi[x];i;i=ne[i])
if (zz[i]!=y)
{
sd[zz[i]]=sd[x]+;
num[zz[i]]=num[x]+sl[i];
dfs(zz[i],x);
}
chu[x]=++l;
}
int lca(int x,int y)
{
if (x==y)return x;
if (sd[x]<sd[y])swap(x,y);
for (int i=;i>=;i--)
if (f[i][x]!=&&!(jin[f[i][x]]<=jin[y]&&chu[f[i][x]]>=chu[y]))x=f[i][x];
return f[][x];
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<n;i++)
{
scanf("%d%d%d",&x,&y,&z);
jb(x,y,z);jb(y,x,z);
}
dfs(,);
for (int i=;i<;i++)
for (int j=;j<=n;j++)
f[i][j]=f[i-][f[i-][j]];
while (m--)
{
scanf("%d%d",&x,&y);
printf("%d\n",num[x]+num[y]-*num[lca(x,y)]);
}
return ;
}
bzoj1602的更多相关文章
- [BZOJ1602&BZOJ1787&BZOJ2144]树上LCA的算法巩固练习
简述求LCA的倍增算法 对于树上的所有节点,我们可以很轻松地通过dfs求出其直接的父亲节点以及其深度 通过类似RMQ的原理我们可以处理出每个节点的第2^i个父亲 //这个过程既可以在dfs之后双重循环 ...
- BZOJ1602: [Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1084 Solved: 556[Submit][St ...
- [BZOJ1602] [Usaco2008 Oct] 牧场行走 (LCA)
Description N头牛(2<=n<=1000)别人被标记为1到n,在同样被标记1到n的n块土地上吃草,第i头牛在第i块牧场吃草. 这n块土地被n-1条边连接. 奶牛可以在边上行走, ...
- bzoj1602 / P2912 [USACO08OCT]牧场散步Pasture Walking(倍增lca)
P2912 [USACO08OCT]牧场散步Pasture Walking 求树上两点间路径--->lca 使用倍增处理lca(树剖多长鸭) #include<iostream> # ...
- 【bzoj1602】[Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1793 Solved: 935[Submit][St ...
- [USACO08OCT]牧场散步Pasture Walking BZOJ1602 LCA
题目描述 The N cows (2 <= N <= 1,000) conveniently numbered 1..N are grazing among the N pastures ...
- BZOJ第7页养成计划
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1600 BZOJ1601 BZOJ1602 BZOJ1603 BZOJ1604 BZOJ1605 ...
- 【刷水】之USACO2008资格赛(Bzoj1599-1603)
做之前真是没想到有这么水>.< 但做了还是发上来吧>.< 就当是刷一刷AC量&1A率什么的>.< Bzoj1599: [Usaco2008 Oct]笨重的石 ...
- 【刷题记录】BZOJ-USACO
接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...
随机推荐
- dp专题训练
****************************************************************************************** 动态规划 专题训练 ...
- 51nod 1413 权势二进制
本来刚开始还是想用每一位 -1的个数 然后再乘以10 不断累加 后来发现 完全不是这回事啊 因为本身就是0 和 1 所以只要记录出现的最大的数字 就是答案 因为 n >= 1 // 所以不 ...
- ios苹果机系统的1px显示解决方案
1px边框在iPhone高清屏下,其实会变成2个物理像素的边框. /* 解决一像素问题 */ .navigation:before{ content: ""; pointer-ev ...
- Unity3D学习笔记(十三):委托、考试复习
委托:比较什么时候用委托好 下课案例:不用下课铃 1.ClassManager需要拿到所有教室的引用,课堂管理者应该只负责计时并告知每间教室 2.每间教室应该是由当班老师负责是否需要下课,而课堂管 ...
- HDU 3466 Proud Merchants(0-1背包)
http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意: 最近,iSea去了一个古老的国家.在这么长的时间里,它是世界上最富有和最强大的王国.结果,这个国家 ...
- 浅谈PHP5中垃圾回收算法
原文链接:http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源 ...
- python 获取本地语言和编码的代码
#! /usr/bin/env python # encoding=utf8 import locale language, encoding = locale.getdefaultlocale() ...
- MongoDB(课时17 更新函数)
3.4.3 数据更新操作 MongoDB数据存的是副本数据, 最终的数据还要保存在传统的数据库里,所以如果关系型数据库里数据变了,最好的方法是删除里面的MongoDB数据重新插入. 在MongoDB里 ...
- MongoDB(课时9 范围运算)
3.2.2.4 范围查询 只要是数据库,必须存在有“$in”(在范围之中).“$nin”(不在范围之中). 范例:查询姓名是“张三”,“李四”,“王五” db.students.find({" ...
- m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中
m_Orchestrate learning system---三十五.php数据和js数据的解耦:php数据(php代码)不要放到js代码中 一.总结 一句话总结:也就是以html为中介,用html ...