AT_unionfind_a.Union Find

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

本题为讲座用题目。页面底部附有题解。

考虑一个有 NN 个顶点的无向图,该图不一定是简单图。初始状态下,图中只有顶点,没有任何边,所有顶点都是孤立的。接下来会给出 QQ 次如下两种类型的操作:

  • 连接操作:在顶点 AA 和顶点 BB 之间添加一条边。
  • 查询操作:判断顶点 AA 和顶点 BB 是否连通。如果连通则输出 Yes,否则输出 No。

请按顺序处理所有操作,并对每个查询操作输出答案。需要注意的是,可能会多次添加同一条边,也可能会添加自环。

顶点 AA 和顶点 BB 连通,指的是可以通过若干条边从 AA 到达 BB。当 AA 和 BB 是同一个顶点时,视为连通。由于图是无向图,连接操作在 AA 和 BB 之间添加边后,AA 可以到达 BB,BB 也可以到达 AA。

输入格式

输入通过标准输入给出,格式如下:

NN QQ
P1P_1 A1A_1 B1B_1
P2P_2 A2A_2 B2B_2
⋮\vdots
PQP_Q AQA_Q BQB_Q

  • 第 11 行包含两个整数 N (1≤N≤100 000)N\ (1 \leq N \leq 100\,000) 和 Q (1≤Q≤200 000)Q\ (1 \leq Q \leq 200\,000),分别表示顶点数和操作数,以空格分隔。
  • 接下来的 QQ 行,每行包含三个整数 Pi (0≤Pi≤1)P_i\ (0 \leq P_i \leq 1)、AiA_i、Bi (0≤Ai,Bi≤N−1)B_i\ (0 \leq A_i, B_i \leq N-1),以空格分隔。
    • 当 Pi=0P_i = 0 时,表示连接操作。
    • 当 Pi=1P_i = 1 时,表示查询操作。

输出格式

对于每个查询操作,输出一行答案。每次输出后需换行。

输入输出样例

  • 输入#1

    8 9
    0 1 2
    0 3 2
    1 1 3
    1 1 4
    0 2 4
    1 4 1
    0 4 2
    0 0 0
    1 0 0

    输出#1

    Yes
    No
    Yes
    Yes

说明/提示

题解

并查集(Union Find,素集合数据结构) 来自 AtCoder Inc.

样例解释 1

操作按如下顺序执行:

  • 第 11 次操作,将顶点 11 和顶点 22 连接。
  • 第 22 次操作,将顶点 33 和顶点 22 连接。
  • 第 33 次操作,查询顶点 11 和顶点 33 是否连通。它们已连通,输出 Yes。
  • 第 44 次操作,查询顶点 11 和顶点 44 是否连通。它们未连通,输出 No。
  • 第 55 次操作,将顶点 22 和顶点 44 连接。
  • 第 66 次操作,查询顶点 44 和顶点 11 是否连通。它们已连通,输出 Yes。
  • 第 77 次操作,将顶点 44 和顶点 22 连接。它们已连通,但允许出现多重边。
  • 第 88 次操作,将顶点 00 和顶点 00 连接。它们是同一个顶点,也允许出现自环。
  • 第 99 次操作,查询顶点 00 和顶点 00 是否连通。同一个顶点总是连通的,输出 Yes。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页