作业介绍
好好学习,可不只是说说而已。
P1163 【入门】树的公共祖先(LCA)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
typedef long long LL;
int n,x,y,a,b;
int f[N], fx[N], fy[N];
int px=0, py=0;
int main(){
cin>>n>>x>>y;
for(int i=1; i<=n; i++) f[i]=i;
for(int i=1; i<n; i++) {
cin>>a>>b; f[a] = b;
}
while(f[x] != x){
fx[++px] = x; // 修改地方,x,y可能相同
x = f[x];
}
while(f[y] != y){
fy[++py] = y;// 修改地方
y = f[y];
}
int rt=1;
for(int i=1; i<=px; i++){
int flag=0;
for(int j=1; j<=py; j++){
if(fx[i] == fy[j]){
rt=fx[i]; flag=1; break;
}
}
if(flag) break;
}
cout<<rt;
return 0;
}
完成基本要求的题目后,可以在首页题单中练习:首页-> 13、STL模板
题目
- 状态
- 已结束
- 题目
- 33
- 开始时间
- 2023-1-13 0:00
- 截止时间
- 2023-1-21 23:59
- 可延期
- 24 小时