求助
查看原帖
求助
385939
liyuheng1212蒟蒻楼主2021/5/9 10:07
#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
vector<int >g[N];
int deep[N],n,fa[N],m,s;
void dfs(int x,int f)
{
    deep[x]=deep[f]+1;
    fa[x]=f;
	for(int i=0;i<g[x].size();i++)
	{
		if(g[x][i]!=f)
		{
			dfs(g[x][i],x);
		}
	}
}
int getlca(int x,int y)
{
	while(x!=y)
	{
		if(deep[x]>deep[y])
		{
			x=fa[x];
		}else
		{
			y=fa[y];
		} 
	} 
	cout<<x<<endl;
    return 0;
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<n;i++)
	{
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	dfs(s,0);
	for(int i=1;i<=m;i++)
	{
		int ax,ay;
		cin>>ax>>ay;
		getlca(ax,ay);
	}
}
2021/5/9 10:07
加载中...