news 2026/4/18 2:04:02

洛谷 P1551 题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷 P1551 题解

题目背景

若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。

题目描述

规定:x 和 y 是亲戚,y 和 z 是亲戚,那么 x 和 z 也是亲戚。如果 x,y 是亲戚,那么 x 的亲戚都是 y 的亲戚,y 的亲戚也都是 x 的亲戚。

输入格式

第一行:三个整数 n,m,p,(n,m,p≤5000),分别表示有 n 个人,m 个亲戚关系,询问 p 对亲戚关系。

以下 m 行:每行两个数 Mi​,Mj​,1≤Mi​, Mj​≤n,表示 Mi​ 和 Mj​ 具有亲戚关系。

接下来 p 行:每行两个数 Pi​,Pj​,询问 Pi​ 和 Pj​ 是否具有亲戚关系。

输出格式

p 行,每行一个YesNo。表示第 i 个询问的答案为“具有”或“不具有”亲戚关系。

输入输出样例

输入 #1复制

6 5 3 1 2 1 5 3 4 5 2 1 3 1 4 2 3 5 6

输出 #1复制

Yes Yes No

一道相当接近模板题的并查集。

如果我们注意到并查集是递归实现的并且具有如下形式:

int find(int n,vector<int>&a){ if(a[n]==n)return n; //找到根节点 return a[n]=find(a[n],a); //查询根节点 }

这道题就会非常简单:

只需要先将每个a[i]赋值为i,然后对于每个关系使用:(re[i].first,re[i].second对应两个人)

int _min=min(re[i].first,re[i].second); int _max=max(re[i].first,re[i].second); a[find(_max,a)]=find(_min,a);

就可以将关系联通(注意我们每次更改的是关系的根节点),随后对于查询,只要找到两人对应的根节点即可。

代码如下:

#include<bits/stdc++.h> using namespace std; int find(int n,vector<int>&a){ if(a[n]==n)return n; return a[n]=find(a[n],a); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); int n,m,p; cin>>n>>m>>p; vector<int>a(n+1,0); vector<pair<int,int>>re(m+1); stringstream ss; for(int i=1;i<=n;i++)a[i]=i; for(int i=0;i<m;i++){ cin>>re[i].first>>re[i].second; int _min=min(re[i].first,re[i].second); int _max=max(re[i].first,re[i].second); a[find(_max,a)]=find(_min,a); } for(int i=1;i<=n;i++)find(i,a); for(int i=0;i<p;i++){ int q1,q2; cin>>q1>>q2; if(find(q1,a)==find(q2,a))ss<<"Yes"<<"\n"; else ss<<"No"<<"\n"; } cout<<ss.str(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:16:38

ur-rtde详细使用教程

打开终端&#xff0c;一键安装&#xff01; pip install --upgrade ur-rtde $ pip install --upgrade ur-rtde Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: ur-rtde in /home/robot/.local/lib/python3.…

作者头像 李华
网站建设 2026/4/13 3:59:45

EmotiVoice语音兴奋度调节点燃活动氛围

EmotiVoice语音兴奋度调节点燃活动氛围 在一场线上虚拟演唱会中&#xff0c;观众正通过弹幕热烈互动。突然&#xff0c;舞台中央响起一个充满激情的声音&#xff1a;“准备好迎接今晚的高潮了吗&#xff1f;让我们一起倒数——3、2、1&#xff01;”瞬间&#xff0c;全场气氛被…

作者头像 李华
网站建设 2026/4/16 18:06:56

EmotiVoice支持批量文本转语音任务自动化处理

EmotiVoice&#xff1a;让语音合成拥有情感与个性的自动化引擎 在数字内容爆炸式增长的今天&#xff0c;我们早已不满足于“机器能说话”——真正打动人心的是那些会笑、会怒、会哽咽的声音。无论是游戏里一句带着颤抖的警告&#xff0c;还是有声书中恰到好处的叹息&#xff0c…

作者头像 李华
网站建设 2026/4/17 17:04:14

2.4 人机协同与并行协作:构建可控、可扩展的智能体系统

2.4 人机协同与并行协作:构建可控、可扩展的智能体系统 导语:至此,我们已经掌握了构建单个复杂 Agent 的核心技术。但真正的“智能”往往是群体的涌现。无论是多个 AI Agent 之间的分工协作,还是在关键节点引入人类智慧进行决策,都是构建更强大、更可靠系统的必由之路。在…

作者头像 李华
网站建设 2026/4/18 1:57:22

马斯克成史上首位身家超6000亿美元富豪;中国首批L3自动驾驶车型获准入许可;雷军生日:网友集体送祝福,共忆小米成长| 极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们好&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。&#xff08;投稿或寻求报道&#xff1a;zhanghycsdn.net&#xff09; 整理 | 苏宓 出品 | CSDN&#xff08;…

作者头像 李华
网站建设 2026/3/31 15:17:28

【必收藏】从零到精通AI智能体:核心架构、框架选择与实战指南

一、开篇&#xff1a;AI 智能体的 “进化革命” 当大语言模型&#xff08;LLMs&#xff09;从 “文本生成器” 升级为能自主决策、联动工具的 “智能实体”&#xff0c;AI 行业迎来了关键转折点 ——AI 智能体&#xff08;AI Agent&#xff09; 应运而生。 它不再是被动响应指…

作者头像 李华