//输入无根树的结点个数n,输入n-1条边(u, v),输入欲指定的根的编号root,建立以root为根的树
/*可变长数组 一个有maxn行 当时每行长度可以不同的数组
用于表示树中结点间的关系
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 1000;
vector<int> G[maxn]; //STL中的可变长数组
int n, root, p[maxn];
void dfs(int u, int fa) //递归转化以U为根的子树, U的父亲为fa
{
int d = G[u].size();
for(int i = 0; i < d; i++)
{
const int& v = G[u][i];
if(v != fa)
dfs(v, p[v] = u);
}
}
int main()
{
int u, v;
scanf("%d", &n);
for(int i = 0; i < n-1; ++i)
{
scanf("%d %d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
scanf("%d", &root);
p[root] &
【树结构】 无根树转有根树
最新推荐文章于 2024-07-25 14:01:28 发布
这篇博客探讨了C++标准模板库中的vector,它是一个动态数组,可以存储任意类型的数据。文章讨论了如何利用vector将无根树转换为有根树,涉及动态增加和压缩数据的操作。
摘要由CSDN通过智能技术生成