题目传送门
题目大意
有 \(n\) 个节点和 \(m\) 条限制,每条限制形如 \(x,y,T\) 或 \(x,y,N\) 分别表示 \(y\) 一定是 \(x\) 的祖先和 \(y\) 一定不是 \(x\) 的祖先。求一种可行树的构造方案,需要求出每个节点的父节点并输出。
分析
首先我们会发现如果一个节点要成为根,很显然有:
· 这个节点一定不为某个节点的后代;
· 这个节点一定是所有节点的祖先;
现在有了这两个条件,我们就可以随便选一个根出来了。如果没有这样的节点,也就是说没有根就可以直接输出无解。
接下来是非根节点。其实很简单,当成根来处理就好了:通过选根的方法同样选出这一轮的根,换句话说就是刨去之前已经选定的节点之后剩下的节点中的根,让它们接在已经选好的节点上。其中需要用并查集来维护祖先关系。
感觉比较简单吧。
Code
码风略丑,将就看吧。
#include<bits/stdc++.h>
using namespace std;
int n,m,father[1005],exfather[1005],un_find[1005],vis[1005];
struct node{int d1,d2;char op;
};
node edge[1000005];
int getfa(int u){if(un_find[u]==u) return u;return un_find[u]=getfa(un_find[u]);
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d %c",&edge[i].d1,&edge[i].d2,&edge[i].op);if(edge[i].op=='T') vis[edge[i].d1]=1;else vis[edge[i].d2]=1;}int root=0;for(int i=1;i<=n;i++)if(vis[i]==0) root=i;if(root==0){printf("NIE\n");return 0;}for(int i=1;i<=n;i++) exfather[i]=root,father[i]=-1;father[root]=0;for(int js=1;js<n;js++){for(int i=1;i<=n;i++){un_find[i]=i;if(father[i]!=-1) vis[i]=1;else vis[i]=0;}for(int i=1;i<=m;i++){if(edge[i].op=='T'&&father[edge[i].d2]==-1){vis[edge[i].d1]=1;if(father[edge[i].d1]==-1) un_find[getfa(edge[i].d1)]=getfa(edge[i].d2);}}for(int i=1;i<=m;i++)if(edge[i].op=='N'&&getfa(edge[i].d1)==getfa(edge[i].d2)) vis[edge[i].d2]=1;root=0;for(int i=1;i<=n;i++)if(vis[i]==0) root=i;if(root==0){printf("NIE\n");return 0;}father[root]=exfather[root];for(int i=1;i<=n;i++)if(getfa(i)==getfa(root)) exfather[i]=root;}for(int i=1;i<=n;i++) printf("%d\n",father[i]);return 0;
}
比较好懂吧,注释懒得敲了。
\(\sim\) ❀完结撒花❀ \(\sim\)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179400.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
GESP认证C++编程真题解析 | 202303 二级
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…
智能风控平台 scalability 设计:AI应用架构师的经验分享
智能风控平台Scalability设计实战:AI应用架构师的5个核心策略
一、引言:为什么智能风控平台必须重视Scalability?
1. 痛点引入:你是否遇到过这些“崩溃瞬间”?
作为AI应用架构师,我曾亲历某电商平台大促期间…
[豪の算法奇妙冒险] 代码随想录算法训练营第三十一天 | 56-合并区间、738-单调递增的数字
LeetCode56 合并区间、LeetCode738 单调递增的数字代码随想录算法训练营第三十一天 | 56-合并区间、738-单调递增的数字LeetCode56 合并区间题目链接:https://leetcode.cn/problems/merge-intervals/description/
文章…
MATLAB表格数据处理的项目落地经验(避坑+效率提升)
在科研数据分析、工程测试数据处理、工业报表生成等实际项目中,MATLAB的`readtable()`/`writetable()`及`table`对象操作是高频核心技能。我结合近5年的项目经验(如车载传感器数据解析、光伏实验数据处理、工业Excel…
最新论文 | EarthVL: 武大钟燕飞团队提出渐进式理解/生成框架, 从识别到深度理解遥感地物, 提供专业决策建议 - MKT
最新论文 | EarthVL: 武大钟燕飞团队提出渐进式理解/生成框架, 从识别到深度理解遥感地物, 提供专业决策建议https://mp.weixin.qq.com/s/6gVsTTZ7OT_VT5VcGsiDLA
《卷一》人形机器人导论:从机械设计到系统集成
第1篇 人形机器人的发展与基础认知第1章 人形机器人的发展历史、趋势与应用场景1.1 人形机器人的发展历程1.1.1 早期仿人研究到现代机器人1.1.2 ASIMO等标志性里程碑1.1.3 特斯拉、Figure、Unitree的商业化推动1.2 未来趋势与行业需求1.2.1 具身智能推动的产业变革1.2.2…
Flutter × OpenHarmony 跨端开发之汇率转换与汇率卡片展示
文章目录Flutter OpenHarmony 跨端开发之汇率转换与汇率卡片展示前言背景Flutter Harmony OpenHarmony 跨端开发介绍开发核心代码代码解析:心得总结Flutter OpenHarmony 跨端开发之汇率转换与汇率卡片展示 前言
随着全球化经济的发展,汇率的实时查询…
(1-1)人形机器人的发展历史、趋势与应用场景:人形机器人的发展历程
本章首先系统介绍了人形机器人的发展脉络,从早期仿人研究到ASIMO等里程碑事件,再到特斯拉、Figure、宇树等企业推动的商业化进程,勾勒出人形机器人产业的演进全景。然后进一步分析了具身智能、大模型融合背景下的人形机器人发展趋势及其在劳动…
优雅汇率:Flutter × OpenHarmony 跨端汇率转换计算器实现
文章目录优雅汇率:Flutter OpenHarmony 跨端汇率转换计算器实现前言背景Flutter Harmony OpenHarmony 跨端开发介绍开发核心代码构建转换计算器 Widget核心逻辑解析心得总结优雅汇率:Flutter OpenHarmony 跨端汇率转换计算器实现
前言
随着全球经济…
(1-2)人形机器人的发展历史、趋势与应用场景:未来趋势与行业需求
1.2 未来趋势与行业需求随着具身智能、大模型与机器人核心硬件的快速发展,人形机器人正从技术验证阶段迈向面向真实场景的规模化应用阶段。未来的发展趋势不仅体现在智能水平的持续提升,更体现在对劳动力结构、生产方式与服务形态的深刻重塑。在制造业、…
Flutter × OpenHarmony 汇率转换应用中的智能货币选择器实现
文章目录Flutter OpenHarmony 汇率转换应用中的智能货币选择器实现前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码代码解析心得总结Flutter OpenHarmony 汇率转换应用中的智能货币选择器实现 前言
在现代移动应用中,货币转换功能是出境旅游、跨境电商及…
提示工程质量保证体系:如何保证Prompt的一致性?
提示工程质量保证:构建Prompt一致性的系统方法论
元数据框架
标题:提示工程质量保证:构建Prompt一致性的系统方法论
关键词:提示工程, Prompt一致性, 质量保证体系, 语义对齐, 模型输出稳定性, 反馈迭代, 大模型应用
摘要…
综述北航基于视觉的无人机定位与导航方法研究 - MKT
综述北航基于视觉的无人机定位与导航方法研究主要贡献全面总结了基于视觉的无人机定位与导航技术,包括图像检索和图像匹配两大类定位方法,以及障碍物检测与规避、路径规划两类导航方法,揭示了现有技术的优势和局限。…
AI原生应用持续学习框架对比:TensorFlow vs PyTorch
AI原生应用持续学习框架对比:TensorFlow vs PyTorch
一、引言 (Introduction)
钩子 (The Hook)
你是否遇到过这样的困境? 花费数周训练的图像分类模型,上线3个月后准确率从92%暴跌至75%——原因是用户上传的图片中出现了新的类别(比如原本识别“猫/狗”,现在多了“仓鼠…
(1-3)人形机器人的发展历史、趋势与应用场景:人形机器人关键技术体系总览
1.3 人形机器人关键技术体系总览人形机器人是一种高度复杂的综合系统,其能力水平取决于多学科关键技术的协同程度。本节从系统工程视角出发,对人形机器人核心技术体系进行整体梳理:以机械系统构建类人结构与运动基础,以电气系统与…
求小数点后某一位数字
求小数点后某一位数字分数a/b化为小数后,小数点后第n位的数字是多少?
【输入】
三个正整数a,b,n
相邻两个数之间用单个空格隔开。0<a<b<100,1<=n<=10000
【输出】
一个数字
错解
#include<iost…
大数据领域中 RabbitMQ 的消息压缩技术
大数据场景下RabbitMQ消息压缩实战:从原理到落地的全攻略
摘要/引言
在大数据时代,高吞吐量、大体积消息已成为RabbitMQ的常见挑战:比如电商系统的交易日志(每条10KB+)、物联网的传感器数据(每秒10万条)、数据同步中的全量备份(单条100KB+)。这些场景下,未压缩的消…
AD域控组策略------禁用所有本地账号,只启用Administrator账号并统一重置密码
powershell脚本代码如下【已在Windows7、Windows10、Windows11系统上测试功能正常】保存为*.ps1文件,组策略中调用此脚本,计算机配置------策略------Windows设置------脚本(启动/关机)------启动中引用脚本即可,…