利用dfs和并查集实现点对的最近公共祖先,首先递归到叶子节点,然后在返回时才确定父子关系,按照这样的顺序确定父子关系之后,最早出现的公共父节点便是最近公共祖先。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000;
const int maxm=1000;
int lca[maxn+5][maxn+5];
vector<int>nxt[maxn+5];
vector
利用dfs和并查集实现点对的最近公共祖先,首先递归到叶子节点,然后在返回时才确定父子关系,按照这样的顺序确定父子关系之后,最早出现的公共父节点便是最近公共祖先。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000;
const int maxm=1000;
int lca[maxn+5][maxn+5];
vector<int>nxt[maxn+5];
vector