tarjan-LCA模板
洛谷P3379
#include <cstdio>
using namespace std;
const int max_n=;
struct etype{
int t,next;
};
struct qtype{
int t,next,id;
};
etype e[*max_n];
qtype q[*max_n];
int a[max_n],b[max_n],ans[max_n],fa[max_n];
bool vis[max_n];
int cnt;
void addedge(int u,int v)
{
cnt++;
e[cnt].t=v;e[cnt].next=a[u];a[u]=cnt;
}
void addquery(int i,int u,int v)
{
cnt++;
q[cnt].t=v;q[cnt].id=i;q[cnt].next=b[u];b[u]=cnt;
}
int findfather(int k)
{
if (fa[k]==k) return k;
fa[k]=findfather(fa[k]);
return fa[k];
}
void dfs(int k)
{
fa[k]=k;vis[k]=true;
int i=b[k];
while (i>)
{
if (vis[q[i].t])
{
if (ans[q[i].id]==) ans[q[i].id]=findfather(q[i].t);
}
i=q[i].next;
}
i=a[k];
while (i>)
{
if (!vis[e[i].t])
{
dfs(e[i].t);
fa[e[i].t]=k;
}
i=e[i].next;
}
}
int main()
{
int n,m,s;
scanf("%d%d%d",&n,&m,&s);
for (int i=;i<=n;i++) a[i]=;
cnt=;
for (int i=;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
addedge(x,y);addedge(y,x);
}
for (int i=;i<=n;i++) b[i]=;
cnt=;
for (int i=;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
addquery(i,x,y);addquery(i,y,x);
}
for (int i=;i<=n;i++) vis[i]=false;
for (int i=;i<=m;i++) ans[i]=;
dfs(s);
for (int i=;i<=m;i++) printf("%d\n",ans[i]);
return ;
}
tarjan-LCA模板的更多相关文章
- hdu 2586 How far away?(LCA模板题+离线tarjan算法)
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- POJ 1330 Nearest Common Ancestors(LCA模板)
给定一棵树求任意两个节点的公共祖先 tarjan离线求LCA思想是,先把所有的查询保存起来,然后dfs一遍树的时候在判断.如果当前节点是要求的两个节点当中的一个,那么再判断另外一个是否已经访问过,如果 ...
- LCA模板
/*********--LCA模板--***************/ //设置好静态参数并构建好图的邻接表,然后调用lca_setquery()设置查询 //最后调用lca_start(),在lca ...
- bzoj 1602 [Usaco2008 Oct]牧场行走(LCA模板)
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 379 Solved: 216[Submit][Sta ...
- 倍增求lca模板
倍增求lca模板 https://www.luogu.org/problem/show?pid=3379 #include<cstdio> #include<iostream> ...
- Tarjan+LCA【洛谷P2783】 有机化学之神偶尔会做作弊
[洛谷P2783] 有机化学之神偶尔会做作弊 题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人. 有一天他一边搓炉石一边监考,而你作为一个信息竞赛的大神也来凑热闹. 然而你的化竞基友却向你求助了. ...
- HDU 2586——How far away ?——————【LCA模板题】
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- poj 3417 Network(tarjan lca)
poj 3417 Network(tarjan lca) 先给出一棵无根树,然后下面再给出m条边,把这m条边连上,然后每次你能毁掉两条边,规定一条是树边,一条是新边,问有多少种方案能使树断裂. 我们设 ...
- 算法复习——LCA模板(POJ1330)
题目: Description A rooted tree is a well-known data structure in computer science and engineering. An ...
- LCA模板(数剖实现)
题目链接:https://www.luogu.org/problemnew/show/P3379 题意:LCA模板题. 思路:今天开始学树剖,先拿lca练练.树剖解lca,两次dfs复杂度均为O(n) ...
随机推荐
- Ubuntu查看端口使用情况,使用netstat命令:
https://www.cnblogs.com/fly-book/p/9827128.html
- indy idhttpserver有关下载的两个问题
http://aawwmate.blog.163.com/blog/static/77528256201092733950315/ indy idhttpserver有关下载的两个问题 2010-10 ...
- 学习HTML5 全局属性 accesskey-title
属性classcontextmenu指定一个元素的上下文菜单.当用户右击该元素,出现上下文菜单dirdropzone指定是否将数据复制,移动,或链接,或删除idspellcheck检测元素是否拼写错误 ...
- TCP 为什么是三次握手,而不是两次或四次?
记得第一次看TCP握手连接的时候,有同样的疑问,我的疑问是,为何不是两次呢?后来随着对网络的理解深入,明白TCP报文是交由IP网络来负责运输,IP网络并不能保证TCP报文到达目的地,既然IP网络是指望 ...
- 【ABAP系列】SAP ABAP 给初学者-解读function函数的export和import等参数
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 给初学者-解读 ...
- PHP 是怎么接收到请求的?
本篇文章主要描述一下几点 ● nginx 怎么转发请求 给 PHPFPM? ● CGI 和 FastCGI 到底是个什么玩意? ● PHPFPM 是什么?有什么作用? 简单场景描述 在浏览器上访问一个 ...
- Hibernate异常:IllegalArgumentException
异常信息: java.lang.IllegalArgumentException: attempt to create delete event with null entity at org.hib ...
- 《JAVA设计模式》之模板模式(Template)
在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...
- Linux部署禅道环境
1.打开WinSCP 2. 输入Linux IP 用户名(root)及密码(123456)并点击保存 3. 点击登录后再输入一次密码 4.把ZenTaoPMS.11.2.stable.zbox_6 ...
- knn原理及借助电影分类实现knn算法
KNN最近邻算法原理 KNN英文全称K-nearst neighbor,中文名称为K近邻算法,它是由Cover和Hart在1968年提出来的 KNN算法原理: 1. 计算已知类别数据集中的点与当前点之 ...