bsoj1375 tarjan离线求lca
来源:互联网 发布:魔法王座升阶数据大全 编辑:程序博客网 时间:2024/06/06 04:54
模板题。。。不多说了很好理解
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define MAX 200005#define rep(i,j,k) for(int i=j;i<=k;i++)using namespace std;int n,k,to[2*MAX],next[2*MAX],head[MAX],ask_to[2*MAX],ask_next[2*MAX],ask_head[MAX];int tot=0,Tot=0;int num[MAX*2],father[MAX],ans[MAX],done[MAX],mark[MAX],root,m;void add(int from,int To){to[++tot]=To;next[tot]=head[from];head[from]=tot;}void add_ask(int from,int To,int Num){ask_to[++Tot]=To;num[Tot]=Num;ask_next[Tot]=ask_head[from];ask_head[from]=Tot;}int getfather(int x){if(father[x]==x)return x;father[x]=getfather(father[x]);return father[x];}void tarjan(int x){done[x]=1;father[x]=x;for(int i=head[x];i;i=next[i]){int y=to[i];if(!done[y]){tarjan(y);father[y]=x;}}mark[x]=1;for(int i=ask_head[x];i;i=ask_next[i]){int y=ask_to[i];if(mark[y])ans[num[i]]=getfather(y);}}int main(){scanf("%d%d",&n,&m);rep(i,1,n-1){int a1,a2;scanf("%d%d",&a1,&a2);add(a1,a2);father[a2]=a1;}rep(i,1,m){int a1,a2;scanf("%d%d",&a1,&a2);add_ask(a1,a2,i);add_ask(a2,a1,i);}root=1;while(father[root])root=father[root];tarjan(root);rep(i,1,m)printf("%d\n",ans[i]);return 0;}
0 0
- bsoj1375 tarjan离线求lca
- tarjan离线求lca
- tarjan算法 离线求LCA
- Tarjan离线算法求LCA小结
- tarjan 离线求 lca (专题)
- LCA 离线算法 tarjan
- HDU2586 离线tarjan LCA
- LCA 离线tarjan算法
- POJ1330(LCA-离线tarjan)
- LCA Tarjan离线算法
- LCA离线算法tarjan
- LCA离线算法Tarjan
- 离线Tarjan lca
- LCA 离线算法: tarjan
- lca 离线tarjan模板
- tarjan 离线 lca hdu2586
- Tarjan离线算法求最近公共祖先(LCA)
- poj 1470 Closest Common Ancestors(tarjan离线求lca)
- Oracle 语句优化
- C++笔记:面向对象编程(Visual)
- 压感容流 ,冲击电流冲击电压
- Qt控件大小
- 网络131第5周实验——盲打测试、基本控制语句(if、for、while)
- bsoj1375 tarjan离线求lca
- 黑马程序员_4_如何修改TreeMap集合的root?
- 《黑马程序员》 读写锁的使用练习
- 《黑马程序员》 读写锁之缓存系统
- poj 2239 Selecting Courses 二分图最大匹配
- php时间戳转实例代码
- php根据年月获取季度示例
- Web编程学习六:使用Apache olingo将JPA数据库操作转化为RESTful Web Service
- 有一种渣,叫做由内而外的渣,就是我