poj 2763 LCA
来源:互联网 发布:网络教育能考公务员吗 编辑:程序博客网 时间:2024/05/26 12:05
#include<cstdio>#include<cstring>#include<algorithm>#define MAX_N 100010using namespace std;struct point{int to,next,id;}G[MAX_N];int head[MAX_N],depth[MAX_N],bit[MAX_N],in[MAX_N],out[MAX_N],parent[21][MAX_N],vs[MAX_N],val[MAX_N];int cnt,k;void add_edge(int from,int to,int id){G[cnt].to=to;G[cnt].id=id;G[cnt].next=head[from];head[from]=cnt++;}void dfs(int v,int p,int d){depth[v]=d;parent[0][v]=p;for(int i=1;i<20;i++){if(parent[i][v]==-1)parent[i][v]=-1;elseparent[i][v]=parent[i-1][parent[i-1][v]]; }for(int i=head[v];i!=-1;i=G[i].next){point &e=G[i];if(e.to==p)continue;in[e.id]=vs[e.to]=++k;dfs(e.to,v,d+1);out[e.id]=++k;}}int LCA(int u,int v){if(depth[u]>depth[v])swap(u,v);for(int k=0;k<20;k++){if((depth[v]-depth[u])>>k&1)v=parent[k][v];}if(u==v)return u;for(int k=19;k>=0;k--){if(parent[k][u]!=parent[k][v]){u=parent[k][u];v=parent[k][v];}}return parent[0][v];}int sum(int i){int res=0;while(i>0){res+=bit[i];i-=i&-i;}return res;} void add(int i,int v){while(i<=k){bit[i]+=v;i+=i&-i;}}int main(){memset(head,-1,sizeof(head));cnt=k=0;int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int a,b,c;char str[100];scanf("%d%d%d%s",&a,&b,&c,str);add_edge(a,b,i);add_edge(b,a,i);val[i]=c;}dfs(1,-1,0);memset(bit,0,sizeof(bit));for(int i=1;i<=m;i++){add(in[i],val[i]);add(out[i],-val[i]);}int Q;scanf("%d",&Q);while(Q--){int a,b;scanf("%d%d",&a,&b);printf("%d\n",sum(vs[a])+sum(vs[b])-2*sum(vs[LCA(a,b)]));}}
0 0
- POJ 2763 在线lca
- POJ 2763 LCA+BIT
- poj 2763 LCA
- 【POJ 2763】Housewife Wind【LCA】
- POJ 2763 Housewife Wind (LCA + 树状数组)
- poj 2763 Housewife Wind 树链剖分+LCA
- poj 2763 Housewife Wind 【LCA or 树链剖分】
- POJ - 2763 Housewife Wind(LCA+暴力)
- POJ 2763Housewife Wind(LCA)
- POJ 2763 Housewife Wind (LCA+线段树)
- POJ 1330 LCA问题
- poj 3417(LCA应用)
- POJ 水题 1330 LCA
- 【RMQ+LCA】POJ 1986
- poj 1470--tarjan--LCA
- poj 1330 LCA
- POJ 1470 LCA
- POJ 3694 Tarjan+LCA
- 玩codecombat游戏,沙漠有一关牧羊人卡住了,求解答
- 剑指offer——用两个栈实现队列
- loadrunner 的安装及汉化
- Java —— 接口可以多继承
- git rebase 合并多个 Commit
- poj 2763 LCA
- 测试一下,第一次写
- Linux初级学习之openssh-server 第九章 学习笔记 及 练习题
- FPGA----乘法器的设计
- CentOs配置JDK和Tomcat
- Linux运维笔记-课后作业-日志的内容同步和时间同步
- CAS原理深度分析及其结合Lock,Atomic分析
- Sum of two integers EIJudge
- 多线程之四大线程池的使用介绍