VOI 06 Bài 3 - Kênh xung yếu

View as PDF

Submit solution

Points: 1.01 (partial)
Time limit: 0.9s
Memory limit: 512M
Input: stdin
Output: stdout

Problem source:
Vietnam Olympiad of Informatics 2006 - Bảng B
Problem type
Allowed languages
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

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 truyền tin một chiều từ máy này đến máy kia. Ta gọi một mạch vòng của mạng đã cho là một dãy các máy tính và các kênh nối chúng có dạng:

~u_{1}~, ~e_{1}~, ~u_{2}~, ..., ~u_{i}~, ~e_{i}~, ~u_{i+1}~, ...,~u_{k-1}~, ~e_{k-1}~, ~u_{k}~, ~e_{k}~, ~u_{1}~

Trong đó ~u_{1}~, ~u_{2}~, ...,~u_{k}~ là các máy tính khác nhau trong mạng, ~e_{i}~ -- kênh truyền tin từ máy ~u_{i}~ đến máy ~u_{i+1}~ ~(i = 1, 2, ..., k-1)~, ~e_{k}~ là kênh truyền tin từ máy ~u_{k}~ đến máy ~u_{1}~ . Một kênh truyền tin trong mạng được gọi là kênh xung yếu nếu như bất cứ mạch vòng nào của mạng cũng đều chứa nó.

Yêu cầu: Hãy xác định tất cả các kênh xung yếu của mạng đã cho.

Input

Dòng đầu tiên chứa 2 số nguyên dương ~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 hai số nguyên dương ~u­_ i~, ~v_i~ cho biết kênh nối thứ ~i~ cho phép truyền tin từ máy ~u_{i}~ đến máy ~v_{i}~ .

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

Output

Dòng đầu tiên ghi số nguyên ~k~ là số lượng kênh xung yếu trong mạng đã cho. Ghi ~k = -1~ nếu mạng không chứa kênh xung yếu.

Nếu ~k > 0~ thì mỗi dòng trong số ~k~ dòng tiếp theo ghi thông tin về một kênh xung yếu tìm được theo qui cách mô tả giống như trong file dữ liệu vào. Đồng thời các kênh được in ra theo thứ tự từ điển

Giới hạn

Trong tất cả các test: ~n \leq 1000~, ~m \leq 20000~.

Có 50% số lượng test với ~n \leq 200~.

Sample Input

2 2
1 2
2 1

Sample Output

2
1 2
2 1

Comments

Please read the guidelines before commenting.


There are no comments at the moment.