trang chủ / bài tập / shoelace

Học sinh và dây giày

Đề bài

Mô tả

Cho một đồ thị vô hướng đơn n đỉnh và m cạnh. Các đỉnh được đánh số từ 1 đến n.

Quá trình loại bỏ diễn ra theo từng đợt như sau. Tại mỗi đợt, ta đồng thời xác định mọi đỉnh hiện đang có đúng 1 cạnh nối với đỉnh khác trong đồ thị, rồi xoá toàn bộ các đỉnh đó cùng các cạnh nối với chúng. Đợt đó được tính là một "nhóm bị loại".

Sau khi xoá xong, ta tiếp tục lặp lại với đồ thị còn lại cho đến khi không còn đỉnh nào có đúng 1 cạnh nối — quá trình dừng.

Hãy đếm số nhóm bị loại trong toàn bộ quá trình.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số đỉnh và số cạnh.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên a, b (1a,bn, ab) cho biết có một cạnh nối đỉnh a với đỉnh b.

Đảm bảo không có hai cạnh trùng nhau và không có cạnh tự nối từ một đỉnh đến chính nó.

Dữ liệu ra

In ra một số nguyên duy nhất — số nhóm bị loại.

Ràng buộc

  • 1n100
  • 0mn(n1)2

Ví dụ

Input Output Giải thích
3 3
1 2
2 3
3 1
0 Ba đỉnh tạo thành chu trình; mỗi đỉnh có 2 cạnh nên không có đợt loại nào.
6 3
1 2
2 3
3 4
2 Đợt 1: đỉnh 14 (mỗi đỉnh chỉ có 1 cạnh) bị loại. Đợt 2: đỉnh 23 trở thành các đỉnh có 1 cạnh và bị loại. Hai đỉnh cô lập 5, 6 ban đầu đã có 0 cạnh nên không bao giờ bị xét.
6 5
1 4
2 4
3 4
5 4
6 4
1 Đỉnh 4 là trung tâm hình sao; tất cả 5 đỉnh còn lại đều có đúng 1 cạnh nên bị loại đồng thời. Sau đó đỉnh 4 trở thành đỉnh cô lập (không còn cạnh) nên dừng.

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