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

Phản công

Đề bài

Mô tả

Cho một đồ thị vô hướng đơn G trên N đỉnh được mô tả bởi danh sách M cạnh. Xét đồ thị G của G: G có cùng tập đỉnh, và hai đỉnh phân biệt u,v kề nhau trong G khi và chỉ khi u,v không kề nhau trong G.

Hãy tìm các thành phần liên thông của G — tức là phân hoạch tập {1,2,,N} thành các nhóm sao cho hai đỉnh thuộc cùng một nhóm khi và chỉ khi tồn tại đường đi giữa chúng trong G.

Dữ liệu vào

Dòng đầu chứa hai số nguyên NM — số đỉnh và số cạnh của G.

M dòng sau, dòng thứ i chứa hai số nguyên ai,bi (aibi) — mô tả cạnh thứ i trong G. Không có cặp cạnh nào trùng lặp.

Dữ liệu ra

Dòng đầu in một số nguyên k — số thành phần liên thông của G.

k dòng tiếp theo, mỗi dòng mô tả một thành phần: số đầu là ti (số đỉnh trong thành phần), tiếp theo là ti chỉ số đỉnh thuộc thành phần đó, cách nhau bởi dấu cách.

Thứ tự các thành phần và thứ tự các đỉnh trong mỗi thành phần không quan trọng. Tổng ti phải bằng N.

Ràng buộc

  • 1N5·105
  • 0M106
  • 1ai,biN, aibi

Ví dụ

Input Output Giải thích
4 4
1 2
1 3
4 2
4 3
2
2 1 4
2 2 3
G có các cạnh {1-2,1-3,4-2,4-3}. Trong G chỉ có hai cạnh 1-42-3, cho hai thành phần {1,4}{2,3}.
3 1
1 2
1
3 1 3 2
Trong G, các cạnh là 1-32-3; cả ba đỉnh nối liền qua đỉnh 3.
3 0 1
3 1 2 3
G không có cạnh nên G là đồ thị đầy đủ K3 — tất cả đỉnh thuộc một thành phần.

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