trang chủ / đề bài / voi06_onearc

Mạng máy tính

Đề bài

Mô tả

Một hệ thống n máy tính (các máy tính được đánh số từ 1 đến n) được nối lại thành một mạng bởi m kênh nối, mỗi kênh nối hai máy nào đó và cho phép ta truyền tin một chiều từ máy này đến máy kia. Giả sử s và t là 2 máy tính trong mạng. Ta gọi đường truyền từ máy s đến máy t là một dãy các máy tính và các kênh nối chúng có dạng:

s=u1,e1,u2,…,ui,ei,ui+1,…,uk−1,ek−1,uk=t

trong đó u1,u2,…,uk là các máy tính trong mạng, ei là kênh truyền tin từ máy ui đến máy ui+1 (i=1,2,…,k−1).

Mạng máy tính được gọi là thông suốt nếu như đối với hai máy u, v bất kỳ ta luôn có đường truyền tin từ u đến v và đường truyền tin từ v đến u. Mạng máy tính được gọi là hầu như thông suốt nếu đối với hai máy u, v bất kỳ, hoặc là có đường truyền từ u đến v, hoặc là có đường truyền từ v đến u.

Biết rằng mạng máy tính đã cho là hầu như thông suốt nhưng không thông suốt.

Yêu cầu: Hãy xác định xem có thể bổ sung đúng một kênh truyền tin để biến mạng đã cho trở thành thông suốt được không?

Dữ liệu vào

  • Dòng đầu tiên ghi 2 số nguyên n và m.
  • Dòng thứ i trong số m dòng tiếp theo mô tả kênh nối thứ i bao gồm 2 số nguyên dương ui và vi (ui≠vi) cho biết kênh nối thứ i cho phép truyền tin từ máy ui đến máy vi, i=1,2,…,m.

Các số trên cùng một dòng được ghi cách nhau bởi dấu cách.

Dữ liệu ra

  • Dòng đầu tiên ghi YES nếu câu trả lời là khẳng định, ghi NO nếu câu trả lời là phủ định.
  • Nếu câu trả lời là khẳng định thì dòng thứ hai ghi hai số nguyên dương u, v cách nhau bởi dấu cách cho biết cần bổ sung kênh truyền tin từ máy u đến máy v để biến mạng thành thông suốt. Nếu có nhiều cách, in ra một cách bất kỳ.

Ràng buộc

  • 2≤n≤2000, 1≤m≤30000.
  • 1≤ui,vi≤n, ui≠vi.
  • Mạng đã cho là hầu như thông suốt nhưng không thông suốt.

Ví dụ

Input Output Giải thích
3 2
1 2
2 3
YES
3 1
Thêm kênh 3→1 thì mạng thành vòng 1→2→3→1.
5 7
1 2
2 1
2 3
3 4
4 5
5 4
1 4
YES
4 1
Các nhóm máy truyền tin qua lại được với nhau là {1,2}, {3}, {4,5}. Thêm kênh từ nhóm cuối về nhóm đầu, ví dụ 4→1 hoặc 5→2.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0