• 【树结构】 无根树转有根树


    
    	//输入无根树的结点个数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
    ", i, p[i]);
    	    return 0;
    	}    
    	        
    /*
      输出格式  p[该节点] =  该节点父亲
      比如 p[5] = 1; 结点5的父亲是1; 
      当该节点为根节点 则相应的为-1 
    */ 

    vector_百度翻译

    vector [英]ˈvektə(r) [美]ˈvɛktɚ
    n. 矢量;航向;[生]带菌者;[天]矢径
    vt. 用无线电引导;为…导航


    vector是C++标准模板库中的部分内容,中文偶尔译作“容器”。但并不准确。

    它是一个多功能的,可以操作多种数据结构和算法的模板类和函数库。vector之所以被觉得是一个容器,是由于它可以像容器一样存放各种类型的对象,简单地说。vector是一个可以存放随意类型的动态数组,可以添加和压缩数据。

  • 相关阅读:
    用python写一个北京市的个税计算器
    排序算法(冒泡、选择)-python代码展示
    封装系统内置功能的函数(字符串)
    福彩习题
    打印等腰三角形
    1.冒泡排序法
    腾讯云:搭建 Node.js 环境
    python开发环境搭建
    基于 Ubuntu 搭建 FTP 文件服务
    TensorFlow — 相关 API
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6728050.html
Copyright © 2020-2023  润新知