POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】
<题目链接>
题目大意:
给你一棵树,然后进行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】的更多相关文章
- POJ 1470 Closest Common Ancestors(最近公共祖先 LCA)
POJ 1470 Closest Common Ancestors(最近公共祖先 LCA) Description Write a program that takes as input a root ...
- POJ 1470 Closest Common Ancestors (最近公共祖先LCA 的离线算法Tarjan)
Tarjan算法的详细介绍,请戳: http://www.cnblogs.com/chenxiwenruo/p/3529533.html #include <iostream> #incl ...
- POJ 1470 Closest Common Ancestors【近期公共祖先LCA】
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013912596/article/details/35311489 题目链接:http://poj ...
- POJ 1470 Closest Common Ancestors 【LCA】
任意门:http://poj.org/problem?id=1470 Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000 ...
- POJ 1470 Closest Common Ancestors (LCA,离线Tarjan算法)
Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 13372 Accept ...
- POJ 1470 Closest Common Ancestors (LCA, dfs+ST在线算法)
Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 13370 Accept ...
- POJ 1470 Closest Common Ancestors
传送门 Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 17306 Ac ...
- poj——1470 Closest Common Ancestors
Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 20804 Accept ...
- POJ 1470 Closest Common Ancestors【LCA Tarjan】
题目链接: http://poj.org/problem?id=1470 题意: 给定若干有向边,构成有根数,给定若干查询,求每个查询的结点的LCA出现次数. 分析: 还是很裸的tarjan的LCA. ...
随机推荐
- Confluence 6 使用 WebDAV 客户端来对页面进行操作
下面的部分告诉你如何在不同的系统中来设置原生的 WebDAV 客户端,这个客户端通常显示在你操作系统的文件浏览器中,例如,Windows 的 Windows Explorer 或者 Linux 的 K ...
- SpringBoot获取配置文件的自定义参数
1.在application.properties中自定义参数 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datas ...
- D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线...
觉得不错的麻烦加个Star:https://github.com/zhangzn3/D3-Es6 在线预览地址:https://zhangzn3.github.io/D3-Es6 功能列表:1. 增加 ...
- 利用Form组件和ajax实现的注册
一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面建一个forms.py的文件来存放 2 ...
- vue-cli 里axios的使用
1.axios的安装 cnpm i axios --save 2.axios的引入 安装其他插件的时候,可以直接在 main.js 中引入并 Vue.use(),但是 axios 并不能 use,只能 ...
- pycharm提示This inspection detects any methods which may safely be made static.
示例代码: class Car(object): # 未定义任何类属性 def move(self): # 方法会出现下划线提示This inspection detects any methods ...
- Eclipse中java文件生成jar文件的方法
在eclpse中找到你要导出的java程序 选中它 单击文件 -->export 在弹出的export对话框中找到 jar File 单击选中-->next 按图示顺序依次 选 ...
- Oracle查询CLOB字段类型的内容
select dbms_lob.substr(lo.ldtext) as text from longdescription lo
- thinkphp5.0和thinkphp3.2的区别不同之处
先看目录结构: thinkphp 5.0的目录结构, 文档:https://www.kancloud.cn/manual/thinkphp5/118008 project 应用部署目录 ├─appli ...
- Android Studio运行项目报错:Error:null value in entry: annotationProcessorOutputFolder=null的解决方案
一般是在Android studio异常退出(比如强制关机)后,重新打开后运行项目出现该问题. 解决方案 删除项目根目录的.gradle文件夹,然后Clean Project —— Rebulid ...