首页 > 代码库 > 【树结构】 无根树转有根树
【树结构】 无根树转有根树
//输入无根树的结点个数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] = -1; dfs(root, -1); for(int i = 0; i < n; ++i) printf("p[%d] = %d\n", i, p[i]); return 0; } /* 输出格式 p[该节点] = 该节点父亲 比如 p[5] = 1; 结点5的父亲是1; 当该节点为根节点 则相应的为-1 */
vector_百度翻译
vector | [英]?vekt?(r) | [美]?v?kt? |
n. | 矢量;航向;[生]带菌者;[天]矢径 |
vt. | 用无线电引导;为…导航 |
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”。但并不准确。
它是一个多功能的,可以操作多种数据结构和算法的模板类和函数库。vector之所以被觉得是一个容器,是由于它可以像容器一样存放各种类型的对象,简单地说。vector是一个可以存放随意类型的动态数组,可以添加和压缩数据。
【树结构】 无根树转有根树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。