poj-1330(暴力写的lca)
一看就是lca的板子题
然而
(写这个的时候我忘了怎么写lca)
于是我就试着写暴力了
本以为会tle结果e了一次后居然a掉了
开心到起飞.嘿嘿嘿
但还是格式输出错误了一次而且在ce之前也de了一会儿(sdqxt太蒻了)
sd错误如下:
1. 边的编号和点的编号弄混了
2. 一开始直接写成i <= deep[x] – deep[y]
于是导致循环少了好几次
(这个问题我在博客了写了好多遍,可我还是错qwq..)

3. 但我真正提交的错误是,\n被我写成'空格'了(纯是没在意这事啊)
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std; int fa[],deep[],head[],nxt[],to[],cnt;
bool vis[]; inline int read()
{
int sum = ,p = ;
char ch = getchar();
while(ch < '' || ch > '')
{
if(ch == '-')
p = -;
ch = getchar();
}
while(ch >= '' && ch <= '')
{
(sum *= ) += ch - '';
ch = getchar();
}
return sum * p;
} void dfs(int o)
{
for(int i = head[o];i;i = nxt[i])
{
deep[to[i]] = deep[o] + ;
dfs(to[i]);
}
} void add(int x,int y)
{
fa[y] = x;
nxt[++cnt] = head[x];
head[x] = cnt;
to[cnt] = y;
} void llca(int x,int y)
{
if(deep[x] < deep[y])//始终让x为最深的
swap(x,y);
int qwq = deep[x] - deep[y];
for(int i = ;i <= qwq;i++)
x = fa[x];
if(x == y)
printf("%d\n",y);
else
{
while(x != y)
{
x = fa[x];
y = fa[y];
}
printf("%d\n",y);
}
} int main()
{
int t,n;
t = read();
while(t--)
{
n = read();
cnt = ;
memset(fa,,sizeof(fa));
memset(deep,,sizeof(deep));
memset(head,,sizeof(head));
memset(nxt,,sizeof(nxt));
memset(vis,,sizeof(vis));
memset(to,,sizeof(to));
for(int i = ;i < n;i++)
{
int a= read(),b = read();
vis[b] = true;
add(a,b);
}
int c = read(),d = read();
for(int i = ;i <= n;i++)//找根节点
if(!vis[i])
{
deep[i] = ;
fa[i] = i;
dfs(i);
break;
}
llca(c,d);
}
return ;
}
poj-1330(暴力写的lca)的更多相关文章
- POJ.1330 Nearest Common Ancestors (LCA 倍增)
POJ.1330 Nearest Common Ancestors (LCA 倍增) 题意分析 给出一棵树,树上有n个点(n-1)条边,n-1个父子的边的关系a-b.接下来给出xy,求出xy的lca节 ...
- POJ 1330 Nearest Common Ancestors (LCA,倍增算法,在线算法)
/* *********************************************** Author :kuangbin Created Time :2013-9-5 9:45:17 F ...
- poj 1330 Nearest Common Ancestors LCA
题目链接:http://poj.org/problem?id=1330 A rooted tree is a well-known data structure in computer science ...
- POJ 1330 Nearest Common Ancestors LCA题解
Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19728 Accept ...
- POJ 1330 Nearest Common Ancestors(LCA模板)
给定一棵树求任意两个节点的公共祖先 tarjan离线求LCA思想是,先把所有的查询保存起来,然后dfs一遍树的时候在判断.如果当前节点是要求的两个节点当中的一个,那么再判断另外一个是否已经访问过,如果 ...
- poj 1330 Nearest Common Ancestors lca 在线rmq
Nearest Common Ancestors Description A rooted tree is a well-known data structure in computer scienc ...
- POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA)
POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A ...
- POJ - 1330 Nearest Common Ancestors(基础LCA)
POJ - 1330 Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %l ...
- POJ 1330 Nearest Common Ancestors (LCA,dfs+ST在线算法)
Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14902 Accept ...
随机推荐
- SQLite: sql script demo
如果有成熟的架构,如何根据数据库关系的表.视图等,进行代码生成架构?减少写代码的时间? -- 考虑主键外键 -- create database geovindu; use geovindu; --2 ...
- elementUI vue 编辑中的input的验证残留清除
当使用编辑的时候, 假如上次的验证没通过, 报红了, 下次再点击编辑的时候还会报红,因此要清除验证残留, 方式有两种: this.$refs["from"].resetFields ...
- Android面试题总结(不定期更新、附答案)
1.Activity的启动模式? activity一共有4种启动模式:standard.singleTop singleTask .singleInstance standard:(标准模式)默认的就 ...
- Scala抽象类型
package big.data.analyse.scala import scala.io.{BufferedSource, Source} /** * 抽象类型 * Created by zhen ...
- Centos7开启ssh免密码登录
1.输入命令:cd .ssh进入rsa公钥私钥目录(清空旧秘钥) 2.在当前目录下执行ssh-keygen -t rsa,三次回车后生成新的公钥(id_rsa.pub)私钥(id_rsa)文件(每个节 ...
- [20180926]共享池中的NETWORK BUFFER.txt
[20180926]共享池中的NETWORK BUFFER.txt --//最近几天一直在探究SQL*Net more data from client 相关等待事件,发现SDU相关,自己也网上探究一 ...
- create table 使用select查询语句创建表的方法分享
转自:http://www.maomao365.com/?p=6642 摘要:下文讲述使用select查询语句建立新的数据表的方法分享 ---1 mysql create table `新数据表名` ...
- java笔记--对信号量Semaphore的理解与运用
java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...
- c/c++赋值函数(重载=号运算符)
c/c++赋值函数(重载=号运算符) 首先c++里的各种运算符都是用函数实现的,比如=,就等号函数. 所以当用=给一个对象赋值的时候,实际调用的是=号所对应的=号函数. 分析下面的代码 #includ ...
- c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树
c/c++ 用克鲁斯卡尔(kruskal)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路 ...