<题目链接>

题目大意:
给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数。

解题分析:
LCA模板题,下面用的是离线Tarjan来解决。并且为了代码的简洁,本代码用的是vector存图。

 #include<iostream>
 #include<cstdio>
 #include<cstring>
 #include<vector>

 using namespace std;
 ;

 vector<int>edge[N];
 int query[N][N],father[N],count[N],indeg[N];
 bool vis[N];
 int n,m;
 void init(){
     ;i<=n;i++)edge[i].clear();
     memset(query,,sizeof(query));
     memset(vis,false,sizeof(vis));
     memset(count,,sizeof(count));
     memset(indeg,,sizeof(indeg));
 }
 int find(int x){    //找到根节点
     if(x!=father[x])
         father[x]=find(father[x]);
     return father[x];
 }
 void Tarjan(int u){
     father[u]=u;
     ;i<edge[u].size();i++){   //得到该树上所有节点的父子关系
         int v=edge[u][i];
         Tarjan(v);
         father[v]=u;
     }
     vis[u]=true;
     ;i<=n;i++)
         if(vis[i] && query[u][i])
             count[find(i)]+=query[u][i];   //最近公共祖先出现次数+1
 }
 int main(){
     while(~scanf("%d",&n)){
         init();
         int u,v;
         ;i<n;i++){
             scanf("%d:(%d)",&u,&m);
             while(m--){
                 scanf(" %d",&v);
                 edge[u].push_back(v);   //建立有向边
                 indeg[v]++;    //统计入度,用于寻找根节点
             }
         }
         scanf(" %d",&m);
         ;i<m;i++){
             scanf(" (%d %d)",&u,&v);
             query[u][v]++;     //将代查询的节点也全部记录下来
             query[v][u]++;
         }
         ;i<=n;i++)
             ){
                 Tarjan(i);
                 break;
             }
         ;i<=n;i++)
             if(count[i])
                 printf("%d:%d\n",i,count[i]);
     }
     ;
 }

2018-10-21

POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】的更多相关文章

  1. POJ 1470 Closest Common Ancestors(最近公共祖先 LCA)

    POJ 1470 Closest Common Ancestors(最近公共祖先 LCA) Description Write a program that takes as input a root ...

  2. POJ 1470 Closest Common Ancestors (最近公共祖先LCA 的离线算法Tarjan)

    Tarjan算法的详细介绍,请戳: http://www.cnblogs.com/chenxiwenruo/p/3529533.html #include <iostream> #incl ...

  3. POJ 1470 Closest Common Ancestors【近期公共祖先LCA】

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013912596/article/details/35311489 题目链接:http://poj ...

  4. POJ 1470 Closest Common Ancestors 【LCA】

    任意门:http://poj.org/problem?id=1470 Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000 ...

  5. POJ 1470 Closest Common Ancestors (LCA,离线Tarjan算法)

    Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 13372   Accept ...

  6. POJ 1470 Closest Common Ancestors (LCA, dfs+ST在线算法)

    Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 13370   Accept ...

  7. POJ 1470 Closest Common Ancestors

    传送门 Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 17306   Ac ...

  8. poj——1470 Closest Common Ancestors

    Closest Common Ancestors Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 20804   Accept ...

  9. POJ 1470 Closest Common Ancestors【LCA Tarjan】

    题目链接: http://poj.org/problem?id=1470 题意: 给定若干有向边,构成有根数,给定若干查询,求每个查询的结点的LCA出现次数. 分析: 还是很裸的tarjan的LCA. ...

随机推荐

  1. PID控制器开发笔记之二:积分分离PID控制器的实现

    前面的文章中,我们已经讲述了PID控制器的实现,包括位置型PID控制器和增量型PID控制器.但这个实现只是最基本的实现,并没有考虑任何的干扰情况.在本节及后续的一些章节,我们就来讨论一下经典PID控制 ...

  2. Confluence 6 修改警告的阈值和表现

    修改警告的阈值 一些警告的阈值是可以被配置的.如果你发现一些阈值很容易就触发警告了,你可以对这些阈值进行调整让你的系统警告不容易被触发. 访问 Recognized System Properties ...

  3. Confluence 6 数据库支持的驱动

    数据库 驱动已捆绑? JDBC 驱动 备注 更多信息 PostgreSQL 9.4-1202 JDBC 41 driver download 我们推荐你使用 JDBC 4 的驱动. 如果你希望使用更新 ...

  4. mongoDB基础使用

    环境交代 操作系统: CentOS 6.8 64位 mongodb: 4.06 安装 官方下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62 阿里云 ...

  5. BIgnum类的程序提交

    日期:2018.7.19 星期四 博客期:002 这之前赶着做一个单机游戏的修改器忘了时间,不好意思啊!今天我就把Bignum类的源代码发出来,文件的话,我不知道怎样发,待我好好研究研究这个网站哈!因 ...

  6. ubuntu 调整分辨率

    修改 /etc/X11/xorg.conf配置文件即可

  7. babel-cli 的使用

    1.安装babel-cli npm i babel-cli -D 2.实现npm的初始化 npm init -y 3.配置package.json { "name": " ...

  8. shiro 单点登录原理 实例

    原创 2017年02月08日 17:39:55 4006 Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即 ...

  9. webpack+vue打包之后输出配置文件修改接口文件

    用vue-cli构建的项目通常是采用前后端分离的开发模式,也就是前端与后台完全分离,此时就需要将后台接口地址打包进项目中,but,难道我们只是改个接口地址也要重新打包吗?当然不行了,那就太麻烦了,怎么 ...

  10. thinkphp5.0和thinkphp3.2的区别不同之处

    先看目录结构: thinkphp 5.0的目录结构, 文档:https://www.kancloud.cn/manual/thinkphp5/118008 project 应用部署目录 ├─appli ...