Mạng máy tính

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 Thời gian: 1.0s Bộ nhớ: 500M Input: bàn phím Output: màn hình

Một hệ thống \(N\) máy tính đánh số từ \(1\) đến \(N\) được nối mạng bằng \(M\) kênh truyền tin một chiều giữa một số cặp máy. Mạng cho gọi là thông suốt nếu như từ một máy \(u\) bất kỳ luôn có thể truyền tin đến mỗi máy \(v\) trong số các máy còn lại hoặc theo kênh truyền tin từ \(u\) đến \(v\) hoặc thông qua một số kênh trung gian. Ta gọi một mạng con của mạng đã cho là một mạng gồm một số máy và các kênh nối chúng của mạng đã cho. Trong trường hợp mạng là không thông suốt nó sẽ phân rã thành một số mạng con thông suốt. Mạng con thông suốt được gọi là cực đại nếu như không tồn tại một mạng con thông suốt của mạng đã cho chứa nó như một mạng con. Bạn cần xác định số mạng con thông suốt cực đại của mạng dã cho.

Input

  • Dòng đầu tiên chứa hai số ngyên dương \(N, M\) \((1 \leq N,M \leq 5 \times 10^{5})\)
  • Dòng thứ \(i\) trong \(M\) dòng tiếp theo ghi \(2\) số nguyên dương \(d_{i}, c_{i}\) cho biết kênh truyền tin thứ \(i\) cho phép truyền tin từ máy \(d_{i}\) sang máy \(c_{i}\).

Output

  • Dòng đầu tiên ghi \(K\) là số mạng con thông suốt cực đại của mạng đã cho
  • \(K\) dòng tiếp theo, mỗi dòng ghi dãy các đỉnh thuộc cùng một mạng con thông suốt cực đại

Example

Test 1

Input
9 14
1 2
1 4
1 7
2 3
2 6
3 1
4 5
5 4
5 7
6 7
7 9
9 6
9 8
8 9
Output
3
1 2 3
4 5
6 7 8 9

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.