zoukankan      html  css  js  c++  java
  • LCA(Tarjan)

    program LCA(Tarjan);
    type arr=record
         u,v,w,next:longint;
         end;
    const maxn=100008;
          maxm=100008;
    var eg:array[0..maxm*4] of arr;
        last,lasq,ans,fa:array[0..maxn] of longint;
        flag:array[0..maxn] of boolean;
        n,i,j,q,x,y:longint;
    procedure add(u,v:longint);
    begin
      inc(j);
      eg[j].u:=u;
      eg[j].v:=v;
      eg[j].next:=last[u];
      last[u]:=j;
    end;
    procedure adt(u,v,w:longint);
    begin
      inc(j);
      eg[j].u:=u;
      eg[j].v:=v;
      eg[j].w:=w;
      eg[j].next:=last[u];
      lasq[u]:=j;
    end;
    function find(x:longint):longint;
    begin
      if fa[x]=x then exit(x);
      fa[x]:=find(fa[x]);
      exit(fa[x]);
    end;
    procedure lca(u:longint);
    var v,i:longint;
    begin
      i:=last[u];
      while i<>-1 do
        begin
          v:=eg[i].v;
          if not flag[v] then
            begin
              flag[v]:=true;
              lca(v); fa[v]:=u;
            end;    
          i:=eg[i].next;
        end;
      i:=lasq[u];
      while i<>-1 do
        begin
          v:=eg[i].v;
          if flag[v] and (ans[eg[i].w]=-1) then
            ans[eg[i].w]:=find(v);
          i:=eg[i].next;    
        end;
    end;
    begin
      for i:=1 to maxn do begin last[i]:=-1; lasq[i]:=-1; end;
      j:=-1;
      readln(n,q);
     for i:=1 to n-1 do
        begin
          readln(x,y);
          add(x,y);
          add(y,x);
        end;
      for i:=1 to q do
        begin
          readln(x,y);
          adt(x,y,i);
          adt(y,x,i);
          ans[i]:=-1;
        end;
      fillchar(flag,sizeof(flag),false);
      for i:=1 to n do fa[i]:=i;
      flag[1]:=true;
      lca(1);
      for i:=1 to q do writeln(ans[i]);
    end.
  • 相关阅读:
    APK中java代码反编译
    android应用分析之apk文件结构
    2016第8周五
    优秀前端需要具备的经验
    postgreSQL数据类型转换字符串和数值
    架构设计要考虑的几个方面
    2016第8周一
    常见的交互设计方法
    开源项目使用经验原则
    ExtJS与JQuery对照
  • 原文地址:https://www.cnblogs.com/rpSebastian/p/4156172.html
Copyright © 2011-2022 走看看