news 2026/1/16 6:08:58

洛谷 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/1/9 14:08:12

15、网络相似度与二分网络的构建与分析

网络相似度与二分网络的构建与分析 一、构建相似度网络的前期准备 在构建基于相似度的网络时,若列表 protein 包含每个食品项中的蛋白质含量,可对其进行二分处理。以下是两种实现方式: 1. 普通 Python 方式 import statistics threshold = statistics.mean(protein) …

作者头像 李华
网站建设 2026/1/13 9:22:03

1.5 LangChain vs. DeepSeek:MCP 客户端开发与框架集成的终极对决

1.5 LangChain vs. DeepSeek:MCP 客户端开发与框架集成的终极对决 导语:在上一章,我们成功构建了一个遵循 MCP 协议的标准化工具服务。但“酒香也怕巷子深”,强大的工具服务需要同样强大的客户端来消费。当 Agent 的“大脑”(如 LangChain、DeepSeek)需要调用这些外部工具…

作者头像 李华
网站建设 2026/1/13 15:14:33

设计少儿编程逻辑训练AI助手,通过图形化编程积木操作,AI实时判断代码逻辑错误,提供引导提示,非直接给出答案,记录能力成长轨迹。

少儿编程逻辑训练AI助手程序README文件项目简介本程序是一款面向少儿的图形化编程逻辑训练AI助手&#xff0c;结合创新思维与战略管理理念&#xff0c;通过积木拖拽编程、实时逻辑检查、引导式提示和成长轨迹记录&#xff0c;培养少儿计算思维与问题解决能力。核心功能- 图形化…

作者头像 李华
网站建设 2026/1/14 14:33:07

开发中小商家库存智能预警系统,录入商品销售数据与库存总量,通过时间序列模型,预测补货节点,自动生成采购清单,支持导出EXCEL。

中小商家库存智能预警系统 README文件 项目简介 本系统是为中小商家设计的库存智能管理平台&#xff0c;融合创新思维与战略管理理念&#xff0c;通过时间序列分析预测销售趋势&#xff0c;自动计算补货节点&#xff0c;生成采购清单&#xff0c;并提供数据可视化与Excel导出功…

作者头像 李华
网站建设 2026/1/16 2:34:10

2.5 学术界的“GPT”:DeepResearch 深度研究助手从零到一创建与配置指南

2.5 学术界的“GPT”:DeepResearch 深度研究助手从零到一创建与配置指南 导语:欢迎来到我们第二周的毕业项目!在过去几天里,我们深入探索了 LangGraph 的世界,学习了如何用图的思维构建状态机、实现智能路由、持久化记忆、乃至人机与多智能体协作。现在,是时候将所有这些…

作者头像 李华