poj 1330lca模板题离线算法
#include<iostream>
#include<vector>
using namespace std;
const int MAX=10001;
int pre[MAX],visit[MAX],indegree[MAX];
vector<int>qury[MAX],tree[MAX];
int ancestor[MAX];
void init(int n) {//初始化
int i;
for(i=1;i<=n;i++) {
visit[i]=0;
pre[i]=i;
ancestor[i]=i;
indegree[i]=0;
qury[i].clear();
tree[i].clear();
}
}
int find(int x) {
if(x!=pre[x])
pre[x]=find(pre[x]);//路径压缩
return pre[x];
}
void infind(int a,int b) {//合并
int f1=find(a);
int f2=find(b);
if(f1==f2)
return ;
pre[f1]=f2;
return ;
}
void lca(int u) {
int i,len;
len=tree[u].size();
for(i=0;i<len;i++) {
lca(tree[u][i]);
infind(u,tree[u][i]);//将u和其子节点联系起来
ancestor[find(u)]=u;//将所有u的子节点的点都指向u,即u为根
}
visit[u]=1;
len=qury[u].size();
for(i=0;i<len;i++)//
if(visit[qury[u][i]]==1) {//如果找到直接输出
printf("%d\n",ancestor[find(qury[u][i])]);
return ;
}
}
int main() {
int n,t,a,b,i;
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
init(n);
for(i=1;i<n;i++) {
scanf("%d%d",&a,&b);
tree[a].push_back(b);
indegree[b]++;
}
scanf("%d%d",&a,&b);
qury[a].push_back(b);
qury[b].push_back(a);
for(i=1;i<=n;i++)
if(indegree[i]==0) {
lca(i);
break;
}
}
return 0;
}
poj 1330lca模板题离线算法的更多相关文章
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- 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 1502 MPI Maelstrom(模板题——Floyd算法)
题目: BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distri ...
- HDU 1874 畅通工程续(模板题——Floyd算法)
题目: 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰 ...
- SPOJ RPLN (模板题)(ST算法)【RMQ】
<题目链接> 题目大意:给你一段序列,进行q次区间查询,每次都输出询问区间内的最小值. 解题分析: RMQ模板题,下面用在线算法——ST算法求解.不懂ST算法的可以看这篇博客 >& ...
- [poj2449]Remmarguts' Date(K短路模板题,A*算法)
解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...
- HDU 2544 最短路(模板题——Floyd算法)
题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...
- POJ 1986 - Distance Queries - [LCA模板题][Tarjan-LCA算法]
题目链接:http://poj.org/problem?id=1986 Description Farmer John's cows refused to run in his marathon si ...
- A Plug for UNIX POJ - 1087(模板题 没啥好说的。。就用了一个map)
题意: 几种插头,每一种都只有一个,但有无限个插头转换器,转换器(a,b) 意味着 可以把b转换为a,有几个设备,每个设备对应一种插头,求所不能匹配插头的设备数量 这个题可以用二分图做 , 我用的是最 ...
随机推荐
- Toasts官方教程
Toasts IN THIS DOCUMENT The Basics Positioning your Toast Creating a Custom Toast View 在其它线程中启动Toast ...
- 转-CoreText 使用教程
转自:http://www.dapps.net/dev/iphone/how-to-create-a-simple-magazine-app-with-core-text.html Core Text ...
- hihocoder 分隔相同字符
思路: 枚举,贪心. 在“合法”的前提下放置越排在前边的字母越好. “合法”:'a' - 'z'中没有一个字母的个数超过当前串剩余长度的一半(偶数情况下)或长度的一半加1(奇数情况下). 实现: #i ...
- 用idea+maven编译打包spark project core错误:java.lang.RuntimeException: Unable to load a Suite class
Discovery starting. *** RUN ABORTED *** java.lang.RuntimeException: Unable to load a Suite class tha ...
- Red Hat Linux常用命令
1.查看机器型号 [root@local ~]# dmidecode | grep "Product Name" Product Name: VMware Virtual Plat ...
- KVM环境下vCPU绑定到物理CPU
在KVM环境中测试虚拟系统性能时,如果宿主机是有两个CPU socket的硬件,会碰到由于vCPU在不同物理CPU上浮动导致测试RFC2544时出现少量丢包的现象,测试结果非常不稳定.可以将vCPU绑 ...
- 这是一条立了Flag的不归路
时间2017年7月11日 14:48:40 首次激活博客园的博客来进行学习记录,立下了不算远大的小目标,下一步就是要一步一步的往前走. Java是目前最普遍的使用语言之一,作为一名测试,本应该去学习更 ...
- libevent学习之网络通信
服务器端要实现网络通信,肯定会用到socket等函数,这几个函数应该没什么问题.libevent默认情况下是单线程的,可以配置成多线程,每个线程有一个event_base,对应一个struct eve ...
- ar - 建立, 修改档案或从档案中抽取成员.
总览 ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files... 描述 GNU 组织的ar 程序 用于建立, 修改档案 ...
- Matrix (二分套二分
Given a N × N matrix A, whose element in the i-th row and j-th column Aij is an number that equals i ...