社区讨论
TLE悬关
P3379【模板】最近公共祖先(LCA)参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhjl9g20
- 此快照首次捕获于
- 2025/11/04 04:24 4 个月前
- 此快照最后确认于
- 2025/11/04 04:24 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int n,m,f[500005],book[500005],deep[500005],fa;
vector<int> a[500005];
void dfs(int x,int s,int d)
{
deep[x]=d;
f[x]=s;
book[x]=1;
for(int i=0;i<a[x].size();i++)
if(book[a[x][i]]==0)
dfs(a[x][i],x,d+1);
return ;
}
int lca(int x,int y)
{
if(deep[x]<deep[y])
swap(x,y);
while(deep[x]!=deep[y])
x=f[x];
if(x==y)
return x;
while(x!=y)
x=f[x],y=f[y];
return x;
}
int main()
{
cin>>n>>m>>fa;
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(fa,0,1);
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
cout<<lca(x,y)<<endl;
}
return 0;
}
大佬们TLE了,求调悬关QwQ
回复
共 3 条回复,欢迎继续交流。
正在加载回复...