1 void dfs(int u) 2 { 3 for(int 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
抓住青春的尾巴。。。