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

Thành phần chu trình

Đề bài

Mô tả

Cho một đồ thị vô hướng gồm n đỉnh và m cạnh. Nhiệm vụ của bạn là đếm số thành phần liên thông là chu trình.

Một thành phần liên thông được gọi là một chu trình nếu có thể sắp xếp lại các đỉnh của nó thành một dãy sao cho đỉnh thứ nhất nối với đỉnh thứ hai bằng một cạnh, đỉnh thứ hai nối với đỉnh thứ ba, ..., đỉnh cuối cùng nối với đỉnh đầu tiên, và thành phần đó không chứa bất kỳ cạnh nào khác ngoài các cạnh vừa mô tả. Theo định nghĩa, một chu trình có ít nhất ba đỉnh.

Đồ thị không có khuyên (cạnh nối một đỉnh với chính nó) và không có cạnh lặp (giữa mỗi cặp đỉnh có nhiều nhất một cạ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, dòng thứ i chứa hai số nguyên vi,ui mô tả một cạnh nối hai đỉnh viui.

Dữ liệu ra

In ra một số nguyên duy nhất: số thành phần liên thông là chu trình.

Ràng buộc

  • 1n2·105
  • 0m2·105
  • 1vi,uinuivi
  • Đồ thị không có cạnh lặp.

Ví dụ

Input Output Giải thích
5 4
1 2
3 4
5 4
3 5
1 Thành phần {3, 4, 5} tạo thành tam giác nên là một chu trình. Thành phần {1, 2} chỉ là một cạnh nên không phải chu trình.
17 15
1 8
1 12
5 11
11 9
9 15
15 5
4 13
3 13
4 3
10 16
7 10
16 7
14 3
14 4
17 6
2 Hai thành phần là chu trình: {5, 11, 9, 15} (chu trình dài 4) và {7, 10, 16} (tam giác).

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