洛谷P3367-【模板】并查集(并查集模板题)

简介: 洛谷P3367-【模板】并查集(并查集模板题)

题目描述:


如题,现在有一个并查集,你需要完成合并和查询操作。


输入:



第一行包含两个整数N、M,表示共有N个元素和M个操作。

接下来M行,每行包含三个整数Zi、Xi、Yi

当Zi=1时,将Xi与Yi所在的集合合并

当Zi=2时,输出Xi与Yi是否在同一集合内,是的话输出Y;否则话输出N


输出:


如上,对于每一个Zi=2的操作,都有一行输出,每行包含一个大写字母,为Y或者N


样例输入:


4 7

2 1 2

1 1 2

2 1 2

1 3 4

2 1 4

1 2 3

2 1 4


样例输出:


N

Y

N

Y


说明/提示:


时空限制:1000ms,128M

数据规模:

对于30%的数据,N<=10,M<=20;

对于70%的数据,N<=100,M<=1000;

对于100%的数据,N<=10000,M<=200000。


程序代码:


#include<bits/stdc++.h>
using namespace std;
int i,j,k,n,m,p1,p2,p3;
int f[10001];
int getf(int v)
{
  if(f[v]==v)
    return v;
  else
  {
    f[v]=getf(f[v]);
    return f[v];
  }
}
void merge(int v,int u)
{
  int t1=getf(v);
  int t2=getf(u);
  if(t1!=t2)
    f[t2]=t1;
}
int main()
{
  cin>>n>>m;
  for(i=1;i<=n;i++)
    f[i]=i;
  for(i=1;i<=m;i++)
  {
    cin>>p1>>p2>>p3;
    if(p1==1)
      merge(p2,p3);
    else
    {
      if(getf(p2)==getf(p3))
        cout<<"Y"<<endl;
      else
        cout<<"N"<<endl;
    }
  }
  return 0;
}
相关文章
|
12月前
|
自然语言处理
有关“RaNER命名实体识别-中文-新闻领域-base模型的命名实体识”的个人小建议
当新闻中出现不具体人名(如范某)时,建议模型能正确提取;对于含名词的非特殊名称(如“七块熹平石经”),建议不提取;此外,模型应解决去重问题,或给出词频。
|
存储 SQL 关系型数据库
mysql中主键索引和联合索引的原理与区别
本文详细介绍了MySQL中的主键索引和联合索引原理及其区别。主键索引按主键值排序,叶节点仅存储数据区,而索引页则存储索引和指向数据域的指针。联合索引由多个字段组成,遵循最左前缀原则,可提高查询效率。文章还探讨了索引扫描原理、索引失效情况及设计原则,并对比了InnoDB与MyISAM存储引擎中聚簇索引和非聚簇索引的特点。对于优化MySQL性能具有参考价值。
|
IDE 前端开发 JavaScript
蓝河BlueO - 快速开始开发
蓝河BlueO - 快速开始开发
145 0
|
区块链 数据库 数据安全/隐私保护
LP流动性挖矿系统开发及跨链桥技术
跨链桥以及其他类似的技术革新可能推动DeFi应用程序在未来突破特定区块链的限制。这意味着它们可以在支持智能合约功能的其他区块链中行。
LP流动性挖矿系统开发及跨链桥技术
|
分布式计算 大数据 数据处理
上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?
本文对 Spark 和 Flink 的技术与场景进行了全面分析与对比,且看下一代大数据计算引擎之争,谁主沉浮?
3014 0
下一篇
开通oss服务