LCA - Tarjan 算法

 1 void dfs(int u)
 2 {
 3    forint i = 1; i <= n; i++)
 4    {
 5       if(visit[i]&&ask[u][i])
 6       {
 7         LCA[u][i] = Find(i);
 8       }
 9    }
10    visit[u] = true;
11    for(int i = 0; i < g[u].size(); i++)
12    {
13      int son = g[u][i];
14      dfs(son);
15      father[son] = u;
16    }
17 }

理解:   求 u和v的lca rt  

            在dfs->rt 过程中 将u不断的上提使他的father为rt  再访问v的时候就知道了答案  大概就是这样  233

猜你喜欢

转载自www.cnblogs.com/xidian-mao/p/10418522.html