无根树转有根数

2023-05-16

#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;

const int maxn = 1000 + 10;

vector<int> G[maxn];  //记录无根树(即多条边)
int p[maxn];   //某一节点的父节点,-1代表没有节点

//读取无根树
void read_tree()
{
    int u,v,n;
    printf("请输入节点的个数");
    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);
    }
}

//利用深搜将无根树转换为有根数
//为了验证程序的正确性,我们边转换边输出结果
void dfs(int root, int pa)
{
    printf("%d\n",root);
    int d = G[root].size();
    for(int i = 0; i < d; i++)
    {
        int u = G[root][i];
        if(u != pa)
        {
            dfs(u,p[u] = root);
        }
    }
}

int main()
{
    while(1)
    {
        int stop,root;
        printf("是否终止程序?(1代表是,0代表否)");
        scanf("%d",&stop);
        if(stop == 1) break;

        read_tree();  //读取无根树
        printf("请选择一个节点作为根节点");
        scanf("%d",&root);
        dfs(root, p[root] = -1);   //利用深搜将无根树转换为有根数
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无根树转有根数 的相关文章

  • Python读写文件

    coding utf 8 向指定文件中存储指定内容 def text create name msg full path 61 name 43 39 txt 39 file 61 open full path 39 w 39 file wr
  • eclipse设置编码格式

    打开文件 xff0c 点击edit下的setCoding 如图 弹出一个对话框 xff0c 点击other 选择utf 8 先点击apply再点击OK 完成
  • Python打印九九乘法表

    打印九九乘法表 def create table for row in range 1 10 for column in range 1 row 43 1 print str row 43 39 39 43 str column 43 39
  • UVA10562解题报告

    我的GitHub地址 xff1a https github com DongChengrong ACM Program 仔细观察他给出的树 xff0c 我们可以发现这棵多叉树长得比较有特点 最上是树根 xff0c 而每一个节点只要有孩子下面
  • 实用函数之判断素数

    功能 xff1a 判断一个数是否是素数 素数概念 xff1a 只能被1和它本身整除的数 实现语言 xff1a C C 43 43 int is prime int n if n lt 61 1 return 0 int m 61 floor
  • 打不开IDLE

    我开始安装的是Python3 6 xff0c 后来发现很多库不支持3 6只支持2 7 xff0c 所以我又重装了2 7 xff0c 这时再打开IDLE就打不开了 经过我的几次努力终于找到了解决方案 将C盘 用户 xff08 user xff
  • Ubuntu系统中使用gdebi安装.deb文件

    传统软件套件管理工具 dpkg 定义 xff1a dpkg为 Debian 专门开发的套件管理系统 xff0c 方便软件的安装 更新及移除 首先 xff0c 要安装dpkg软件管理工具 suo span class token functi
  • IDLE设置字体大小

    点击option gt Configure 在出现的弹框里修改字体大小 xff0c 注意字体不能是楷体等与中文相关的字体 xff0c 否则点击OK无效 xff08 虽然在我电脑上确实是这样但是不知道为什么 xff0c 如果有知道的同学希望能
  • 关于递归问题的一点见解

    背景 前不久参加牛客网的有书共读活动意外的获得了一本 具体数学 xff0c 对此感谢牛客 其次领书是要条件的 xff0c 条件就是写读书笔记 搞ACM的都知道具体数学是本什么样的神书 xff08 也可能是我太弱了 xff09 xff0c 不
  • Python乱码问题

    原因 xff1a 源文件编码格式是UTF 8而Windows的编码格式是GBK xff0c 所以出现了乱码现象 解决方案一 xff1a 编码格式改成GBK就可以了 如下 第二种解决方案 coding utf 8 import sys typ
  • Python创建模块并导入

    Python创建自己的模块很方便 xff0c 所有的 py文件都被视为是一个模块 我们可以用import 文件名的方式把它导入自己的新文件 不过我们要注意创建的模块要符合命名规范 xff0c 比如首字母不能是数字等 如果首字母是数字就会出现
  • Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK

    现象 xff1a android util AndroidRuntimeException Calling startActivity from outside of an Activity context requires the FLA
  • Python查看库安装路径

    打开IDLE xff0c 输入如下两行指令 import sys print sys path 3 如下图
  • 安装pip教程

    相信在安装pip之前大家一定都安装了Python 所以我们找到Python的根目录下的Script文件夹 xff08 如果忘记了我们的安装目录可以参考文章http blog csdn net dongchengrong article de
  • pip常用指令

    安装库 xff1a pip install packageName flask 卸载库 xff1a pip uninstall packageName flask 升级库 xff1a pip install upgrade packageN
  • Python操作文件和目录

    对文件和目录进行操作是在我们开发过程中必不可少的一环 xff0c 下面是我整理的一些常用的对文件和目录进行操作的语句 xff0c 希望能帮到你 首先是导包 xff0c 导入包os xff0c import os 1 获取当前Python脚本
  • UVA227解题报告

    因为网格中存在空格所以用gets录入 xff0c 首先录入一行数据 xff0c 如果第一个字符为 39 Z 39 则break退出循环 其次是对指令的接受与处理 接受指令可以用getchar xff0c 遇到换行符跳过 处理也很简单 xff
  • win10/win11系统 如何将7-zip设置为默认软件?

    步骤 第一步 xff0c 首先下载7 zip第二步 xff0c 点击下载的7 zip安装包第三步 xff0c 进入你安装7 zip的文件夹下 xff0c 然后找到7 Zip File Manager第四步 xff0c 右键以管理员权限运行7
  • 南阳理工OJ915解题报告

    描述 Shiva得到了两个只有加号和减号的字符串 xff0c 字串长度相同 Shiva一次可以把一个加号和它相邻的减号交换 他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串 你现在要去帮助他完成那个这个问题 输入 多组测试数据

随机推荐

  • Color the fence

    Color the fence 时间限制 xff1a 1000 ms 内存限制 xff1a 65535 KB 难度 xff1a 2 描述 Tom has fallen in love with Mary Now Tom wants to s
  • SDUT 1008最长公共子序列

    题目链接 https acm sdut edu cn onlinejudge2 index php Home Index problemdetail pid 1008 html 分析 题目类型 xff1a 变维DP 状态定义 对于动态规划而
  • 南阳理工OJ73

    比大小 时间限制 xff1a 3000 ms 内存限制 xff1a 65535 KB 难度 xff1a 2 描述 给你两个很大的数 xff0c 你能不能判断出他们两个数的大小呢 xff1f 比如123456789123456789要大于 1
  • Unable to locate JAR/zip in file system as specified by the driver definition: mysql-connector-java-

    第一次用eclipse配置hibernate映射 xff0c 结果遇到了这种错误 怎么办 xff1f 别担心 xff0c 解决方案送上来 找到对话框里的JAR List选项 xff0c 点击clear把所有的jar包删掉再重新把jar包导入
  • Flask网页出现UnicodeDecodeError

    具体错误 xff1a UnicodeDecodeError 39 utf8 39 codec can 39 t decode byte 0xd6 in position 46 invalid continuation byte 如图 这是怎
  • 实用函数之计算某天是星期几

    功能 xff1a 给你一个日期 xff0c 计算出这一天是星期几 适用范围 xff1a 只对1600年以后的日期有效 实现语言 xff1a C C 43 43 acm相关题目 xff1a An problem about date 相关资料
  • 差分标记讲解

    引论 维护区间信息的数据结构有很多 xff0c 像线段树 树状数组等 xff1b 然而线段树之类的数据结构往往要写上一段板子 xff08 尽管不是太长 xff09 xff0c 但在算法竞赛中却很有可能导致我们与别人慢上那么几分钟 xff0c
  • 使用Flask渲染静态网页(模板)

    假设我们有了一个已经写好的网页 xff0c 我们希望把这个网页展示出来 xff0c 我们需要怎么做呢 xff1f 在Flask中我们把这一工作叫做渲染模板 xff0c 其中我们准备好的网页叫做模板 xff0c 渲染工作交给一个叫做jinja
  • Linux常用指令(初级)

    1 ls 显示当前目录下的所有文件和文件名 2 mkdir xxx xff1a 创建一个名为xxx的目录 3 touch xxx txt xff1a 创建一个名为xxx txt的文件 4 rm xxx txt xff1a 删除名为xxx t
  • 最受欢迎的菜品

    7 2 最受欢迎的菜品 20分 某自助餐厅要求餐厅的客人在就餐后进行投票 xff0c 选出一款最喜爱的菜品 xff0c 每日营业结束后进行投票统计 xff0c 选出投票数最多的菜品为最受欢迎的菜品 请编写一个程序帮助餐厅快速完成这个统计工作
  • DOS查看端口占用情况并杀死占用某个端口的进程

    输入指令 netstat ano即可查看端口占用情况 找到自己想杀死的进程 xff0c 输入指令 xff1a taskkill PID 进程ID即可杀死进程 如果显示无法杀死 xff0c 可以强杀 xff0c 即输入指令 xff1a tas
  • Error:(37, 13) Failed to resolve: com.android.support:appcompat-v7:26 <a href="install.m2.repo">Inst

    报错信息 xff1a Error 37 13 Failed to resolve com android support appcompat v7 26 lt a href 61 34 install m2 repo 34 gt Insta
  • ACM中使用唯一分解定理

    一 求出整数n的素数因子 二 求出各素数因子的指数 三 利用这两组数据求解
  • 进程与程序的区别

    1 进程是动态的 xff0c 程序是静态的 2 进程有生命周期 xff0c 程序没有生命周期 3 一个进程只能对应一个程序 xff0c 一个程序却可以对应多个进程 没有建立进程的程序不能作为一个独立的单位获得操作系统的认可
  • 轻松上手vim

    vim是一款相当不错的文本编译器 xff0c 让我来介绍一下vim的基本使用方法 首先新建一个文件 xff0c 例如main cpp 命令为touch main cpp 然后使用vim打开 xff0c 命令为vim main cpp xff
  • AtCoder Regular Contest 085 C题题解

    通过给出的样例找出规律如下 xff1a 设循环的次数为k xff0c 则 k 61 2 m 设每次循环的花费为c xff0c 则 c 61 xff08 n m xff09 100 43 m 1900 故总的运行时间 x 61 k c 代码如
  • Split Linked List in Parts(LeetCode725)

    参加LeetCode weekly contest 58时的一道价值5分的题 xff0c 是关于数据结构的 要求将一个链表均分为k份 xff0c 如果不能均分 xff08 例如链表有6个节点而k 61 5 xff09 xff0c 则各个部分
  • Find Pivot Index(LeetCode 724)

    本想用贪心结果WA xff0c 看来只能老老实实的用枚举了 xff0c 简单粗暴实用 枚举中心轴 xff0c 从0开始 xff0c 定义两个变量left 和 right分别代表轴左边的数据之和以及轴右边的数据之和 xff0c 判断left是
  • B - fLIP

    题目链接 xff1a http code festival 2017 quala contest atcoder jp tasks code festival 2017 quala b 解题思路 xff1a 一个棋盘有N行 xff0c M列
  • 无根树转有根数

    include lt stdio h gt include lt vector gt include lt queue gt using namespace std const int maxn 61 1000 43 10 vector l