Định hướng các cạnh

Đề bài

Mô tả

Cho một đồ thị gồm n đỉnh và m cạnh. Đồ thị không nhất thiết liên thông. Một số cạnh đã được định hướng (không thể thay đổi), số còn lại là vô hướng và bạn cần chọn hướng cho chúng.

Hãy định hướng tất cả các cạnh vô hướng sao cho đồ thị thu được là đồ thị có hướng không chứa chu trình (DAG). Lưu ý rằng bạn không được thay đổi hướng của các cạnh đã có hướng và phải định hướng toàn bộ các cạnh vô hướng.

t bộ dữ liệu độc lập cần xử lý.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1t2·104) — số bộ dữ liệu.
  • Với mỗi bộ:
    • Dòng đầu chứa hai số nguyên nm (2n2·105, 1mmin(2·105,n(n1)2)).
    • m dòng tiếp theo, dòng thứ i gồm ba số ti, xi, yi (ti{0,1}, 1xi,yin):
      • ti=0: cạnh vô hướng nối xiyi.
      • ti=1: cạnh có hướng từ xi đến yi.

Đồ thị không có khuyên (cạnh nối một đỉnh với chính nó) và không có cạnh bội (với mỗi cặp (xi,yi), không tồn tại cặp (xi,yi) hay (yi,xi) nào khác).

Đảm bảo tổng n và tổng m trên tất cả các bộ dữ liệu đều không vượt quá 2·105.

Dữ liệu ra

Với mỗi bộ dữ liệu:

  • Nếu không thể định hướng để thu được DAG, in NO.
  • Ngược lại, in YES trên dòng đầu, sau đó in m dòng mô tả các cạnh của đồ thị có hướng kết quả (thứ tự tùy ý). Hướng của các cạnh đã có hướng phải giữ nguyên. Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ví dụ

Input Output Giải thích
1
3 1
1 2 3
YES
2 3
Chỉ có một cạnh có hướng từ 2 đến 3, giữ nguyên.
1
3 3
1 1 2
1 2 3
1 3 1
NO Ba cạnh có hướng đã tạo thành chu trình 1231, không thể loại bỏ.
1
6 4
1 1 2
0 2 3
1 4 5
0 5 6
YES
1 2
3 2
4 5
6 5
Cạnh vô hướng (2,3) được định hướng 32 và (5,6) thành 65; đồ thị kết quả không có chu trình.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0