愚蠢的LCAAAAA~~~~(>_<)~~~~
很愤怒!特别愤怒!超级愤怒!!!
我LCA居然错了!!而且是那种特别愚蠢的错误
我把代码都交错了!!!
silasila
话不多说,代码上特别详细了
#include<bits/stdc++.h>
#define FOR(i,a,b) for(register int i=a;i<=b;i++)
#define ROF(i,a,b) for(register int i=a;i>=b;i--)
using namespace std;
const int N=+;
int n,m,s;
int scan()
{
int as=,f=;
char c=getchar();
while(c>''||c<''){if(c=='-') f=-;c=getchar();}
while(c>=''&&c<=''){as=(as<<)+(as<<)+c-'';c=getchar();}
return as*f;
}
struct ss
{
int now,next;
}b[N*];
int num=;
int deep[N],fa[N][],lg[N],head[N];
void add(int x,int y)
{
num++;
b[num].next =head[x];
b[num].now=y;
head[x]=num;
}
void dfs(int f,int father)
{
deep[f]=deep[father]+;//根节点的深度
fa[f][]=father;//表明该f的最直接祖先是father
for(int i=;(<<i)<=deep[f];i++)//小于该深度啊...
{
fa[f][i]=fa[fa[f][i-]][i-];//他的祖先是祖先的祖先啊,我们是从
//上往下走的,所以关于他的祖先的祖先也是早就求出来的
}
for(int i=head[f];i;i=b[i].next)//找儿子!!
{
int j=b[i].now ;
if(j!=father)
dfs(b[i].now,f);//找儿子,木有毛病啊
}
}
int lca(int x,int y)
{
if(deep[x]<deep[y])
swap(x,y);//是x成为层数深的那个
ROF(i,,)
{
if(deep[fa[x][i]]>=deep[y]) x=fa[x][i];
if(x==y) return x;//此时就找到了!!
}
// if(x==y) return x;//此时就找到了!!
for(int k=;k>=;k--)
{
if(fa[x][k]!=fa[y][k])//父亲不同就同时往上跳
{
x=fa[x][k];
y=fa[y][k];
}
}
return fa[x][];//此时xy的父节点相同,所以该点直接的父亲结点就是LCA
}
int main()
{
// freopen("lca.in","r",stdin);
// freopen("lca.out","w",stdout);
n=scan();
FOR(i,,n)
{
int x,y;
x=scan();
if(x==) {s=i;}
add(x,i);
//add(i,x);//储存撒
}
dfs(s,);//s是0结点的儿子..
m=scan();
int lst=;
FOR(i,,m)
{
int x,y;
x=scan();y=scan();x=x^lst;y=y^lst;
lst=lca(x,y);
printf("%d\n",lst);
}
return ;
}
silasila
愚蠢的LCAAAAA~~~~(>_<)~~~~的更多相关文章
- DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对?
写在前面 阅读目录: 具体业务场景 业务需求变化 "愚蠢"的应对 消息列表实现 消息详情页实现 消息发送.回复.销毁等实现 回到原点的一些思考 业务需求变化,领域模型变化了吗? 对 ...
- C语言中史上最愚蠢的Bug
C语言中史上最愚蠢的Bug 本文来自“The most stupid C bug ever”,很有意思,分享给大家.我相信这样的bug,就算你是高手你也会犯的.你来看看作者犯的这个Bug吧.. 首 ...
- 【吐槽】IM群里几种我认为愚蠢的提问方式
一.“有人吗?” 你能得到一句[在,请说]的答复我就服了你,这样问的结果往往是等半天没一个人鸟你,悲观的你或者就此凄凉的退群了,感概人情冷暖的同时甚至开始怀疑人生:积极的你或者这才意识到~要不干脆说问 ...
- 一次愚蠢的NOIP模拟赛
找礼物[find.pas/find.c/find.cpp] [问题描述] 新年到了,突然间,就在那美丽的一霎那,你好友和你(K个人)的周围满是礼物,你发扬你帅气的风格,让你的好友先拿,但是每个人只能拿 ...
- discuz特殊主题插件开发步骤和犯的愚蠢错误
discuz作为国内流行的论坛系统,可谓造福了不少趣味相投的网友们.它让天南地北.国内外有着共同兴趣爱好的人们聚集在一起,分享彼此的喜怒哀乐.心得体会.然而作为discuz的使用者之一,还是个码农,然 ...
- 【每周一译】愚蠢的指标:Java中使用最多的关键字
此翻译纯属个人爱好,由于水平所限,翻译质量可能较低.网络上可能存在其它翻译版本,原文地址:http://blog.jooq.org/2013/08/26/silly-metrics-the-most- ...
- 又是一个愚蠢的错误,皆因.xml而起
论java中的.xml到底有多坑?! 感觉自己都快哭了,再一次被.xml给坑了一下,这次坑的太狠了,一下子导致自己浪费了昨天一下午,一晚上,今天一上午和半个下午呀,中间的过程真的是乏善可陈呀,各 ...
- iOSUIWebView---快停下啦,你的愚蠢的行为
公元前 之前还是学生时代的时候给社团们学弟学妹们介绍iOS编程的时候,简单的准备了图灵ios培训第一周(使用UIWebView创建简易浏览器), NSURL *url =[NSURL URLWithS ...
- 一个愚蠢的python逻辑语法错误
这个事情再次佐证了一个莫名其妙的现象背后一定会有一个愚蠢到无以复加的错误的真理. 写python单元测试的时候发现一个莫名其妙的问题: def xmlStandander(self,s): retur ...
随机推荐
- 「日常训练」 Soldier and Number Game (CFR304D2D)
题意 (Codeforces 546D) 给定一个数x=a!b!" role="presentation">x=a!b!x=a!b!的形式,问其中有几个质因数. 分 ...
- C#异步了解一下
如何让你的代码在“同一时间”干着两件件事呢?比如说,在初始化加载配置的同时,UI界面能够响应用户的各种点击事件.而不置于卡死,特别是出现如下面这种情况的时候,对于用户来说是很崩溃的.
- Python-类-函数参数-takes 0 positional arguments but 1 was given
在学习Python基础的时候,在创建某一个shownametest()函数,解析器会报错 TypeError: shownametest() takes 0 positional arguments ...
- java.sql.Date java.sql.Time java.sql.Timestamp 之比较
java.sql.Date,java.sql.Time和java.sql.Timestamp 三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.D ...
- 【Linux运维】Centos7上借助ansible搭建LVS+Keepalived
安装ansible 安装ansible: [root@localhost ~]# /etc/hosts 192.168.19.129 web129.yanglt.com web129 192.168. ...
- CF 55D
Volodya is an odd boy and his taste is strange as well. It seems to him that a positive integer numb ...
- 多版本python import 问题解决方案
原文http://www.tuicool.com/articles/EnE7nm6 多版本Python共存[支持使用pip安装包] 有时特殊需要会要用到高版本的Python, 但是系统自带的版本又是很 ...
- linux备忘录-程序管理与SELinux
知识点 程序与程序(Process and Program) 通过执行一条指令或程序,则可以触发一个事件,并获得一个PID.当我们需要启动一个程序时,我们是启动一个二进制文件(binary file) ...
- redis字符串基本操作
redis之字符串类型: 字符串类型是redis中最基本的数据类型,同时它也是memcached中仅有的数据类型.redis字符串类型的键能存储任何形式的字符串,包括二进制数据,例如,存储json化的 ...
- POJ 2166 Heapsort(递推)
Description A well known algorithm called heapsort is a deterministic sorting algorithm taking O(n l ...