最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • Split Into Two Sets

    正文概述 陈老师   2026-01-20 15:15:05  

    题目描述

    Polycarp 最近得到了一组 nnnn 为偶数)张多米诺骨牌。每张骨牌上有两个从 11nn 的整数。

    他能否将所有骨牌分成两个集合,使得每个集合中的所有骨牌上的数字都互不相同?每张骨牌必须恰好属于其中一个集合。

    例如,如果他有 44 张骨牌:{1,4}\{1, 4\}{1,3}\{1, 3\}{3,2}\{3, 2\}{4,2}\{4, 2\},那么 Polycarp 可以将它们按要求分成两个集合。第一个集合可以包含第一张和第三张骨牌({1,4}\{1, 4\}{3,2}\{3, 2\}),第二个集合包含第二张和第四张骨牌({1,3}\{1, 3\}{4,2}\{4, 2\})。

    输入格式

    第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

    接下来是每个测试用例的描述。

    每个测试用例的第一行包含一个偶数整数 nn2n21052 \le n \le 2 \cdot 10^5),表示骨牌的数量。

    接下来的 nn 行,每行包含两个整数 aia_ibib_i1ai,bin1 \le a_i, b_i \le n),表示第 ii 张骨牌上的数字。

    保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

    输出格式

    对于每个测试用例,输出一行:

    • 如果可以将 nn 张骨牌分成两个集合,使得每个集合中所有骨牌上的数字都互不相同,输出 YES;
    • 否则输出 NO。

    你可以用任意大小写形式输出 YES 和 NO(例如 yEs、yes、Yes 和 YES 都被认为是肯定答案)。

    样例

    6
    4
    1 2
    4 3
    2 1
    3 4
    6
    1 2
    4 5
    1 3
    4 6
    2 3
    5 6
    2
    1 1
    2 2
    2
    1 2
    2 1
    8
    2 1
    1 2
    4 3
    4 3
    5 6
    5 7
    8 6
    7 8
    8
    1 2
    2 1
    4 3
    5 3
    5 4
    6 7
    8 6
    7 8
    
    YES
    NO
    NO
    YES
    YES
    NO
    

    提示

    样例解释

    在第一个测试用例中,骨牌可以这样分组:

    • 第一组骨牌:[{1,2},{4,3}][\{1, 2\}, \{4, 3\}]
    • 第二组骨牌:[{2,1},{3,4}][\{2, 1\}, \{3, 4\}]

    换句话说,在第一组中我们取编号为 1122 的骨牌,在第二组中取编号为 3344 的骨牌。

    在第二个测试用例中,无法将骨牌分成 22 个集合,至少有一个集合会包含重复的数字。

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » Split Into Two Sets