POJ 1470

标准的LCA,输入感觉怪怪的=.=

自己看了下Tarjan,再参考了下别人的处理方法(感觉自己好弱。。)

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std; const int N = 1010;
const int M = 1000010; int in[N], par[N], ans[N];
bool vis[N];
int n, edge, m; struct ST
{
int top;
int next[M],key[M],head[N];
void add(int x,int y)
{
key[top] = y; //记录儿子
next[top] = head[x];
head[x] = top++;
}
void clear()
{
top = 0;
memset(head,-1,sizeof(head));
}
}son,q; int fin(int x)
{
if(x != par[x])
par[x] = fin(par[x]);
return par[x];
} void lca(int cur)
{
par[cur] = cur;
for(int i = son.head[cur];i != -1;i = son.next[i])
{
lca(son.key[i]);
par[son.key[i]] = cur;
}
vis[cur] = true;
for(int i = q.head[cur];i!= -1;i = q.next[i])
{
if(vis[q.key[i]])
ans[fin(q.key[i])]++;
}
} void ini()
{
memset(in,0,sizeof(in));
memset(vis,false,sizeof(vis));
memset(ans,0,sizeof(ans));
} int main()
{
int root, u, num, v;
while(scanf("%d", &n) != EOF)
{
ini();
son.clear(), q.clear();
for(int j = 0; j < n; ++j)
{
scanf("%d:(%d)", &u, &num);
for(int i = 0; i < num; ++i)
{
scanf("%d", &v);
son.add(u, v);
in[v]++;
}
}
for(root = 1;in[root];root++);
scanf("%d",&m);
while(m--)
{
scanf(" (%d %d)", &u, &v);
if(u == v)
q.add(v, u);
else
{
q.add(u, v);
q.add(v, u);
}
}
lca(root);
for(int i = 1;i <= n;i++)
if(ans[i])
printf("%d:%d\n", i, ans[i]);
}
return 0;
}

  

最小公共祖先 (Tarjan) POJ1470的更多相关文章

  1. 51.Lowest Common Ancestor of a Binary Tree(二叉树的最小公共祖先)

    Level:   Medium 题目描述: Given a binary tree, find the lowest common ancestor (LCA) of two given nodes ...

  2. [leetcode]236. Lowest Common Ancestor of a Binary Tree树的最小公共祖先

    如果一个节点的左右子树上分别有两个节点,那么这棵树是祖先,但是不一定是最小的,但是从下边开始判断,找到后一直返回到上边就是最小的. 如果一个节点的左右子树上只有一个子树上遍历到了节点,那么那个子树可能 ...

  3. LCA 最近公共祖先 tarjan离线 总结 结合3个例题

    在网上找了一些对tarjan算法解释较好的文章 并加入了自己的理解 LCA(Least Common Ancestor),顾名思义,是指在一棵树中,距离两个点最近的两者的公共节点.也就是说,在两个点通 ...

  4. HDU 4547 CD操作 (LCA最近公共祖先Tarjan模版)

    CD操作 倍增法  https://i.cnblogs.com/EditPosts.aspx?postid=8605845 Time Limit : 10000/5000ms (Java/Other) ...

  5. LCA最近公共祖先——Tarjan模板

    LCA(Lowest Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先. Tarjan是一种离线算法,时间复杂度O(n+Q),Q表示询问次数,其中 ...

  6. Network-POJ3694(最小公共祖先LCA+Tarjin)

    http://poj.org/problem?id=3694 这一题  为什么要找最小祖先呢 当两个节点连到一块的时候  找最小公共节点就相当于找强连通分支 再找最小公共节点的过程中直到找到  这个过 ...

  7. LCA 最近公共祖先 Tarjan(离线)算法的基本思路及其算法实现

    首先是最近公共祖先的概念(什么是最近公共祖先?): 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点. 换句话说,就是两个点在这棵 ...

  8. LCA最近公共祖先 Tarjan离线算法

    学习博客:  http://noalgo.info/476.html 讲的很清楚! 对于一颗树,dfs遍历时,先向下遍历,并且用并查集维护当前节点和父节点的集合.这样如果关于当前节点(A)的关联节点( ...

  9. PAT A1151 LCA in a Binary Tree (30 分)——二叉树,最小公共祖先(lca)

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...

随机推荐

  1. SciPy - 科学计算库(上)

    SciPy - 科学计算库(上) 一.实验说明 SciPy 库建立在 Numpy 库之上,提供了大量科学算法,主要包括这些主题: 特殊函数 (scipy.special) 积分 (scipy.inte ...

  2. JAVA_SE基础——60.初识Object

    java是面向对象的语言,核心思想:找适合 的对象做适合 的事情:方式一:自定义类,然后通过自定义的类创建对象.方式二:sun提供了很多的类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象 ...

  3. java希尔排序

    java希尔排序 1.基本思想: 希尔排序也成为"缩小增量排序",其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插 ...

  4. restful架构风格设计准则(六)版本管理

    读书笔记,原文链接:http://www.cnblogs.com/loveis715/p/4669091.html,感谢作者! 版本管理 在前面已经提到过,一个REST系统为资源所抽象出的URI实际上 ...

  5. Django之中间件

    中间件简介 什么是中间件 中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功 ...

  6. final类与final方法

    inal---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继 ...

  7. spring cloud zipkin sleuth与spring boot aop结合后,启动慢

    问题描述: 引入了spring cloud的监控starter,间接引入jooq. 又引入了 spring-boot-starter-web,所以间接引入aop. 参考下面资料后:https://gi ...

  8. 无用代码清除tip

    测试提了个bug过来,说是有个ajax请求报404了. 我一看,后台代码被人删了,问了同事,因为实现机制变了,是应该删,但删多了. 把service和controller都恢复后,一个接口中除了我那个 ...

  9. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  10. JPA(一):简介

    JPA是什么 Java Persistence API:用于对象持久化的API Java EE 5.0平台标准的ORM规范,使得应用程序以统一的方式访问持久层. JPA和Hibernate的关系 JP ...