K12048 最近祖先
今天我们再讲一题,这一题是最近祖先,来看一下题目和样例。
我们分析一下样例,样例中的家谱树如下图:
小科的编号为6, 小丁的编号为8, 编号为2的结点即为他们最近的公共祖先。
废话不多说,上代码:
#include<bits/stdc++.h>
using namespace std;
int tr[110];
vector<int> ta,tb;
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
tr[b]=a;
}
ta.push_back(x);
while(tr[x]){
x=tr[x];
ta.push_back(x);
}
tb.push_back(y);
while(tr[y]){
y=tr[y];
tb.push_back(y);
}
for(int i=0;i<ta.size();i++){
for(int j=0;j<tb.size();j++){
if(tb[j]==ta[i]){
cout<<tb[j];
return 0;
}
}
}
return 0;
}
如有错误请及时指出,谢谢观看,拜拜~