文章
1
粉丝
61
获赞
1
访问
1.4k
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n,m;
//此处叶子节点的id不会超过100,而分支节点数目的id>100
const int N1=100010;
const int N2=110;
struct node{
int id;
int rank;
};
bool cmp(node a,node b){
if(a.rank!=b.rank) return a.rank<b.rank;
else return a.id<b.id;
}
//树的父亲表示法
int fa[N1];
//所有待排序的叶子节点
vector<node> nodeList;
//寻找从起点到当前点的最短路,实际就是找到父亲,一层一层自底向上
vector<int> findMiniPath(int v){
vector<int> pre;
while(fa[v]!=100){
pre.emplace_back(fa[v]);
v=fa[v];
}
if(fa[v]==100) pre.emplace_back(fa[v]);
return pre;
}
//两个叶子节点的公共祖先
int findCommonAncestor(int a,int b){
vector&l...
登录后发布评论
暂无评论,来抢沙发