news 2026/5/3 9:58:57

洛谷 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/5/1 7:39:17

如果实验室样本温度出现波动系统会立即通知到人吗?

​ 随着科技的发展&#xff0c;通过安装温湿度监控设备&#xff0c;使得实验室能够实现对温度波动的即时监控和快速响应&#xff0c;确保异常情况能够第一时间被发现并通知管理 人员&#xff0c;从而有效防止样本因温度异常而受到损害。温湿度监控设备通常安装在实验室的关…

作者头像 李华
网站建设 2026/5/1 8:34:30

YOLOv5-ASF-P2:果蝇性别识别与分类实战指南_1

本数据集名为"Adult Dacus Insect Detection"&#xff0c;是一个专注于果蝇性别识别的计算机视觉数据集。该数据集采用CC BY 4.0许可证&#xff0c;由qunshankj平台用户提供&#xff0c;并于2023年9月6日导出。数据集包含274张灰度图像&#xff0c;所有图像均经过预处…

作者头像 李华
网站建设 2026/5/1 8:20:11

天玑AIGEO优化系统,专业之选究竟哪家?

天玑AIGEO优化系统&#xff0c;专业之选究竟哪家&#xff1f;在当今数字化营销领域&#xff0c;天玑AIGEO优化系统正逐渐崭露头角&#xff0c;成为众多企业关注的焦点。但面对市场上的众多选择&#xff0c;专业之选究竟该花落谁家呢&#xff1f;下面我们来深入分析。天玑AIGEO优…

作者头像 李华
网站建设 2026/4/30 14:59:34

EmotiVoice如何实现语音音量的动态起伏调节?

EmotiVoice如何实现语音音量的动态起伏调节&#xff1f; 在虚拟主播一句“谢谢老板送的火箭”听起来像是从ATM机里蹦出来的年代&#xff0c;用户对AI语音的期待早已不再满足于“能听清”。如今&#xff0c;无论是游戏NPC愤怒咆哮时的情绪爆发&#xff0c;还是有声书朗读中低语般…

作者头像 李华
网站建设 2026/5/1 13:52:37

EmotiVoice语音情感标签体系设计逻辑详解

EmotiVoice语音情感标签体系设计逻辑详解 在虚拟偶像深情演唱、客服机器人温柔安抚用户、游戏NPC因剧情转折怒吼或啜泣的今天&#xff0c;我们早已不再满足于“能说话”的AI语音——人们期待的是会共情、有性格、能传递情绪的声音。这背后&#xff0c;正是情感语音合成&#xf…

作者头像 李华
网站建设 2026/5/1 8:42:22

2.3 让 Agent 学会“思考”:用 LangGraph 构建智能路由与记忆管理系统

2.3 让 Agent 学会“思考”:用 LangGraph 构建智能路由与记忆管理系统 导语:在上一个教程中,我们构建了一个可以在两个工具间进行选择的 Agent。但它的“思考”能力还很初级:要么调用工具,要么结束。它的“记忆”是短暂的,程序一停,所有对话历史都烟消云散。要构建能够处…

作者头像 李华