TLE70pts求助
查看原帖
TLE70pts求助
632063
shipeiqian楼主2022/9/11 19:21
#include <bits/stdc++.h>
using namespace std;
vector<int> e[500005];
int n,m,u,v,root,fa[500005];
void dfs(int now,int lst){
    fa[now]=lst;
    for(int i=0;i<e[now].size();i++){
        int nxt=e[now][i];
        if(nxt!=lst)dfs(nxt,now);
    }
}
int lca(int root){
    dfs(root,-1);
    bool flag[500005];
    for(int i=1;i<=n;i++)flag[i]=false;
    while(u!=-1){
        flag[u]=true;
        u=fa[u];
    }
    while(flag[v]!=true)v=fa[v];
    return v;
}
int main(){
    cin >>n >>m >>root;
    for(int i=1;i<n;i++){
        int u,v;
        cin >>u >>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    while(m--){
        cin >>u >>v;
        cout <<lca(root) <<"\n";
    }
    return 0;
}

怎么优化?

2022/9/11 19:21
加载中...