http://poj.org/problem?id=1330

题意:给出一个图,求两个点的最近公共祖先。

sl :水题,贴个模板试试代码。本来是再敲HDU4757的中间发现要用LCA,  操蛋只好用这个题目试试自己写的对不对。 下面是个倍增的写法,挺实用的。

好了,继续。。。

POJ 1330 (LCA)-LMLPHPPOJ 1330 (LCA)-LMLPHP
;
  ][MAX],dep[MAX];
       G[     G[to].push_back( }
      dep[u]=d; parent[][u]=pre;
     ;i<G[u].size();i++) {
                  );
     }
      }
           ;i<=n;i++) {
                      x=i;          }
     }
 
     dfs(x,-,);
     ;k<;k++) {
         ;v<=n;v++) {
             ) parent[k+][v]=-;
             ][v]=parent[k][parent[k][v]];
         }
     }
 }
           ;k<;k++) {
         ) v=parent[k][v];
     }
          ;k>=;k--) {
                      u=parent[k][u]; v=parent[k][v];
         }
     }
     ][u];
 }
      ;i<MAX;i++) G[i].clear();
 }
           scanf(              CLEAR();
         scanf(         memset(is_root,         ;i<=n-;i++) {
             scanf(             add_edge(a,b);
             is_root[b]=         }
         init();
         scanf(                  printf(     }
     ;
 }

SB CODE

05-25 17:52