题解:P11389 [COCI 2024/2025 #1] 等级 / Hijerarhija

news/2024/12/15 21:18:46/文章来源:https://www.cnblogs.com/panda-lyl/p/18608747

思路

因为一棵树的本质是一个图,所以我们可以认为入度为 \(0\) 的节点就是这个树的根。

所以我们统计有几个根,以及是已经作为根的。最后去统计有多少个根就行了。

存储父子关系可以用 unordered_map。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<unordered_map>using namespace std;const int N = 3 * 1e5 + 5;
int n, m;
int in[N];
bool root[N];
unordered_map<int, int> fa[N];int main() {scanf("%d", &n);for (int i = 1; i < n; i++) {int u, v;scanf("%d%d", &u, &v);fa[u][v] = 0; // 为了更清楚的统计,我们只计算 u -> v 这条边,即 fa[v][u] fa[v][u] = 1;in[v]++; // 孩子的入度加 1 }int cnt = 0;for (int i = 1; i <= n; i++) { // 统计 if (!in[i]) { // 入度为 0 root[i] = 1;cnt++;}}if (cnt == 1) printf("DA\n");else printf("NE\n");scanf("%d", &m);for (int i = 1; i <= m; i++) {int u, v;scanf("%d%d", &u, &v);if (fa[u][v]) swap(u, v); // 默认 u 是 v 的父亲,否则交换 in[u]++, in[v]--;if (root[u]) { // 本来是根的现在不是 root[u] = 0;cnt--;} if (!in[v]) { // 新的根 root[v] = 1;cnt++;}if (fa[u][v] == 0) fa[u][v] = 1; // 更新父子关系 else fa[u][v] = 0;if (fa[v][u] == 0) fa[v][u] = 1;else fa[v][u] = 0;if (cnt == 1) printf("DA\n");else printf("NE\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853477.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVN 报错 | svn: E170004: Commit failed (details follow): svn: E170004: Directory xxx is out of date

问题描述 IDEA 中通过 SVN 拉取项目后进行修改,第一次 commit 提交代码的时候成功提交,第二次修改后再提交的时候报错了,提示“Directory xxx is out of date”解决方法 报错的原因是本地项目过时了,和 svn 服务器的项目版本不一致。需要先 update 更新本地的项目,再重新修…

文件保护

文件保护 ‍ ​​ ‍一、口令保护 口令一般存放在文件对应的 FCB 或索引结点中。用户访问文件前需要先输入“口令”,操作系统会将用户提供的口令与 FCB 中存储的口令进行对比,如果正确,则允许该用户访问文件。优点:保存口令的空间开销不多,验证口令的时间开销也很小 缺点:…

文件系统的全局结构(布局)

文件系统的全局结构(布局) 一、文件系统在外存中的结构 演变过程:原始磁盘(刚被生产出来)​​物理格式化(低级格式化):划分扇区,检测坏扇区,并用备用扇区替换坏扇区(骗过OS)​​磁盘分区(分卷Volume)分为C盘、D盘等逻辑格式化完成各分区的文件系统初始化 注:逻辑…

虚拟文件系统文件系统挂载(安装)

虚拟文件系统&文件系统挂载(安装) 一、虚拟文件系统 (一)普通的文件系统 先来看不存在虚拟文件系统的普通文件系统,彼此之间实现同一功能的接口具有差异,比较混乱。 ​​ ‍ (二)VFS 虚拟文件系统 Virtual File System 为解决同时使用不同文件系统需要频繁改动底层…

文件的物理结构(文件分配方式)

文件的物理结构(文件分配方式) ‍ ​​ ‍类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同。 内存与磁盘之间的数据交换(即读/写操作、磁盘 I/O )都是以“块"为单位进行的。即每次读入…

【Adobe Animate 2024下载与安装教程】

1、安装包 我用夸克网盘分享了「Animate 2024」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:下载地址2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载并解压下载的安装包,右击装载2) 双击Setup.exe安装…

jsp前端页面识别不了后端传过来的model-${user.id}

调试: controller 成功接收到参数。并且给model传入数据。界面也跳转了 jsp文件中使用 ${user.id} 获取数据 但是处理的依然是 ${user.id} 而不是传入来的数据。 原因: 默认创建的web,其配置文件 web.xml文件是使用 2.3版本 <!DOCTYPE web-app PUBLIC"-//Sun Micros…

基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout

1. PCB Layout 步骤生成PCB确定PCB layout规范绘制板框尺寸布局 布局规范:按电气性能合理分区,一般分为:数字电路区(即怕干扰、又产生干扰)、模拟电路区(怕干扰)、功率驱动区(干扰源); 完成同一功能的电路,应尽量靠近放置,并调整各元器件以保证连线最为简洁; 对于质…

【C#脚本】C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

以下文章来源于mingupup的学习记录 ,作者DotNet学习交流 前言 每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一…

Derby 数据库介绍(1)--简介

Apache Derby 是 Apache DB 的一个子项目,是一个完全用 Java 实现的开源关系数据库,采用 Apache License 2.0 许可;本文主要介绍其基本概念及安装。 1、Derby 特点 Derby 体积小——基础引擎和嵌入式 JDBC 驱动程序约 3.5MB。Derby 基于 Java、JDBC 和 SQL 标准。Derby 提供…

参数占位符 #{xx} 和 ${xx} 的区别

#{xx} :带有#{}的SQL会采用SQL预编译技术,预编译后的SQL中 #{} 被替换为 “?”,这里的 “?”叫变量占位符,在实际执行SQL时会用“xx”的实际值替换变量占位符,效率更高,可以防止SQL注入SQL预编译:MySQL执行SQL有几个步骤,“查缓存->[语法分析->优化->编译-&…

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别 前言 HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。 Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(Spee…