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

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

    题目描述

    给定一个由 nn 个顶点和 mm 条边组成的图。不能保证给定的图是连通的。其中一些边已经是有向的,你不能改变它们的方向。其他边是无向的,你需要为所有这些无向边选择一个方向。

    你需要以这样的方式为无向边定向,使得最终的图是有向无环的(即所有边都有方向且不包含有向环)。注意,你必须为所有无向边定向。

    你需要回答 tt 个独立的测试用例。

    输入格式

    输入的第一行包含一个整数 tt (1t2×104)(1 ≤ t ≤ 2×10^4) —— 测试用例的数量。接下来是 tt 个测试用例。

    每个测试用例的第一行包含两个整数 nnmm (2n2×105, 1mmin(2×105, n(n1)/2))(2 ≤ n ≤ 2×10^5,\ 1 ≤ m ≤ min(2×10^5,\ n(n−1)/2)) —— 图中顶点的数量和边的数量。

    接下来的 mm 行描述图中的边。第 ii 条边由三个整数 tit_i, xix_iyiy_i (ti[0,1], 1xi,yin)(t_i ∈ [0,1],\ 1 ≤ x_i, y_i ≤ n) 描述 —— 边的类型(ti=0t_i=0 表示边是无向的,ti=1t_i=1 表示边是有向的)以及该边连接的顶点(无向边连接顶点 xix_iyiy_i,有向边从顶点 xix_i 指向顶点 yiy_i)。保证图中不包含自环(即从顶点到自身的边)和重边(即对于每对 (xix_i, yiy_i),不存在其他 (xix_i, yiy_i) 或 (yiy_i, xix_i) 的边)。

    保证所有测试用例的 nnmm 的总和不超过 2×1052×10^5 (n2×105; m2×105)(∑n ≤ 2×10^5;\ ∑m ≤ 2×10^5)

    输出格式

    对于每个测试用例,如果无法通过为无向边定向使得最终的图是有向无环的,则输出 NO;否则在第一行输出 YES,并在接下来的 mm 行中按任意顺序输出最终有向无环图的所有边。注意,你不能改变已有向边的方向。如果有多个解,可以输出任意一个。

    样例

    4
    3 1
    0 1 3
    5 5
    0 2 1
    1 1 5
    1 5 4
    0 5 2
    1 3 5
    4 5
    1 1 2
    0 4 3
    1 3 1
    0 2 3
    1 2 4
    4 5
    1 4 1
    1 1 3
    0 1 2
    1 2 4
    1 3 2
    
    YES
    3 1
    YES
    2 1
    1 5
    5 4
    2 5
    3 5
    YES
    1 2
    3 4
    3 1
    3 2
    2 4
    NO
    

    提示

    样例1解释

    示例中第二个测试用例的解释:

    示例中第三个测试用例的解释:

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » Directing Edges