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) ...
随机推荐
- day36—javascript对表格table的操作应用(一)
转行学开发,代码100天——2018-04-21 今天记录一下,JavaScript对表格table的操作应用,包括表格元素的获取,创建,删除等. 一个普通的完整表格包括以下几个部分:table-&g ...
- php正则提取html img src地址
<?php$str='<img border="0" src="1.jpg" alt=""/><img border ...
- workflow-core 简介
最近想做一个OA相关的网站开发,一直都听说有workflow的东西,之前也断断续续学习过 Workflow Foundation 4.0,还是没有搞明白到底能够用它做什么 但还是觉得workflow在 ...
- JS中设置input的type="radio"默认选中
html: <input id="Radio1" type="radio" value="男" name="st_Sex&q ...
- 使EasyUI的window、panel、dialog 不被拖出页面
function easyuiPanelOnMove(left, top) { var l = left; var t = top; if (l < 1) { l = 1; } ...
- tp5.1 phpspreadsheet- 工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西,)
phpspreadsheet-工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西)1. composer require phpoffice/phpspreadsheet2. 看最下面的两 ...
- debain8 安装mysql8
一.下载apt源 https://dev.mysql.com/downloads/repo/apt/ 二.更新apt sudo apt-get update 三.安装mysql sudo apt-ge ...
- (三)Schema与数据类型优化
1.Schema schema,中文叫模式,是数据库的组织和结构 2.选择优化的数据类型 更小的通常更好:尽量使用可以正确存储数据的最小数据类型 简单就好:简单数据类型的操作通常需要更少的cpu周期. ...
- grep命令用关系或查询多个字符串
bcmsh ps | grep -E 'port|ge2 ' bcmsh ps | grep 'port\|ge2 ' 我的目的是筛选出含有 ‘port’ 或者含有 ‘ge2 ’ 的行,上面的第一行参 ...
- Windows 程序设计--(六)键盘
6.2 击键消息 当按下一个键时,Windows把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入有输入焦点的窗口的消息队列:当您释放一个键时,Windows把WM_KEYUP或者WM_SY ...