zoukankan      html  css  js  c++  java
  • tarjan LCA模板

     1 #include<cstdio>
     2 #include<iostream>
     3 #define MN 300000
     4 using namespace std;
     5 int n,m,w[MN],cnt,h[MN],q[MN];
     6 int s[MN],t[MN],fa[MN],dis[MN],a[MN];
     7 bool vis[MN];
     8 struct edge{int to,next;}e[MN*8];
     9 void ins(int *h,int u,int v){e[++cnt].to=v;e[cnt].next=h[u];h[u]=cnt;}
    10 int ff(int x)={return fa[x]?fa[x]ff(fa[x]):x;}
    11 void tarjan(int u){
    12     vis[u]=true;
    13     for(int i=h[u];i;i=e[i].next){
    14         int v=e[i].to;
    15         if(!vis[v]){
    16             dis[v]=dis[u]+1; tarjan(v); fa[v]=u;
    17         }
    18     }
    19     for(int i=q[u];i;i=e[i].next){
    20         int v=e[i].to;
    21         if(a[v]) a[v]=ff(a[v]);
    22         else a[v]=u;
    23     }
    24 }
    25 int main()
    26 {
    27     scanf("%d%d",&n,&m);
    28     for(int i=1;i<n;i++){
    29         int u,v; scanf("%d%d",&u,&v); ins(h,u,v);
    30     }
    31     for(int i=1;i<=n;i++) scanf("%d",&w[i]);
    32     for(int i=1;i<=m;i++){
    33         scanf("%d%d",&s[i],&t[i]); ins(q,s[i],i); ins(q,t[i],i);
    34     }
    35     tarjan(1);
    36 }
  • 相关阅读:
    深度优先和广度优先
    ajax<转>
    display:inline-block后会有间隙
    css样式多了个分号
    回答
    return false作用
    824. Goat Latin
    7. Reverse Integer
    48. Rotate Image
    9. Palindrome Number
  • 原文地址:https://www.cnblogs.com/Beginner-/p/7596825.html
Copyright © 2011-2022 走看看