传送门

一看就是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)的更多相关文章

  1. POJ.1330 Nearest Common Ancestors (LCA 倍增)

    POJ.1330 Nearest Common Ancestors (LCA 倍增) 题意分析 给出一棵树,树上有n个点(n-1)条边,n-1个父子的边的关系a-b.接下来给出xy,求出xy的lca节 ...

  2. POJ 1330 Nearest Common Ancestors (LCA,倍增算法,在线算法)

    /* *********************************************** Author :kuangbin Created Time :2013-9-5 9:45:17 F ...

  3. poj 1330 Nearest Common Ancestors LCA

    题目链接:http://poj.org/problem?id=1330 A rooted tree is a well-known data structure in computer science ...

  4. POJ 1330 Nearest Common Ancestors LCA题解

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19728   Accept ...

  5. POJ 1330 Nearest Common Ancestors(LCA模板)

    给定一棵树求任意两个节点的公共祖先 tarjan离线求LCA思想是,先把所有的查询保存起来,然后dfs一遍树的时候在判断.如果当前节点是要求的两个节点当中的一个,那么再判断另外一个是否已经访问过,如果 ...

  6. poj 1330 Nearest Common Ancestors lca 在线rmq

    Nearest Common Ancestors Description A rooted tree is a well-known data structure in computer scienc ...

  7. POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA)

    POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A ...

  8. POJ - 1330 Nearest Common Ancestors(基础LCA)

    POJ - 1330 Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %l ...

  9. POJ 1330 Nearest Common Ancestors (LCA,dfs+ST在线算法)

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14902   Accept ...

随机推荐

  1. 《JavaScript高级程序设计》笔记:引用类型(五)

    Object类型 创建object实例方法有两种.第一种方法使用new操作符后跟object构造函数.如下: var person=new Object(); person.name="Ni ...

  2. 2018-11-09 VS Code英汉词典插件v0.0.4-驼峰下划线命名

    首先, 在两天时间内安装数破百, 多谢支持. VS Code插件市场地址: 英汉词典 - Visual Studio Marketplace 开源库地址同前文: Visual Studio Code插 ...

  3. Android项目实战(五十一):浅谈GreenDao

    比较出名的数据库框架 GreenDao使用步骤: 1.app目录下的build.gradle文件 添加依赖 compile 'org.greenrobot:greendao:3.2.0' 顶部添加插件 ...

  4. ImportError: No module named simplejson.scanner

    一.出现ImportError: No module named simplejson.scanner,是没有安装simplejson,安装一下就好了. 安装指令:python setup.py in ...

  5. DAY14(PYTHONS)生成器进阶

    def average(): sum = 0 count = 0 avg = 0 while True: #循环 num = yield avg #遇到yield就停止,防止一开始除数为0导致崩溃 s ...

  6. Docker Data Center系列(四)- 离线安装UCP和DTR

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...

  7. ORACLE如何找到引起账号锁定的IP的一点思考与总结

    在ORACLE数据库中,如果没有修改过FAILED_LOGIN_ATTEMPTS的话,默认10次尝试失败后就会锁住用户.此时再登录数据库,就会遇到ORA-28000: the account is l ...

  8. windows下VMware-workstation中安装CentOS

    windows下VMware-workstation中安装CentOS,可以分两部分,安装虚拟机和安装CentOS虚拟机.具体步骤如下: 一.安装虚拟机 1.安装VMware-workstation, ...

  9. java防止double和float精度丢失的方法

    在浮点数当中做运算时经常会出现精度丢失的情况,如果做项目不作处理的话会对商家造成很大的影响的.项目尤其是金融相关的项目对这些运算的精度要求较高. 问题原因:首先计算机进行的是二进制运算,我们输入的十进 ...

  10. AI学习--机器学习概述

    学习框架 01-人工智能概述 机器学习.人工智能与深度学习的关系 达特茅斯会议-人工智能的起点 机器学习是人工智能的一个实现途径深度学习是机器学习的一个方法发展而来(人工神经网络) 从图上可以看出,人 ...