trang chủ / đề bài / cyccolor

Tô màu vòng tròn

Đề bài

Mô tả

Cho một đồ thị có hướng G gồm n đỉnh và m cung (cho phép có cung lặp và khuyên tự nối). Bạn cần tô mỗi đỉnh của đồ thị bằng một trong k màu (với k≤n) sao cho: với mọi cung đi từ đỉnh u tới đỉnh v, màu của đỉnh v phải là màu kế tiếp của màu tô đỉnh u.

Các màu được đánh số vòng tròn từ 1 tới k. Nghĩa là với mỗi màu i (i<k), màu kế tiếp của nó là màu i+1; còn màu kế tiếp của màu k là màu 1. Đặc biệt, nếu k=1 thì màu kế tiếp của màu 1 vẫn là màu 1.

Nhiệm vụ của bạn là tìm và in ra giá trị k lớn nhất có thể (k≤n) sao cho có thể tô màu đồ thị G thỏa mãn điều kiện trên. Lưu ý rằng bạn không nhất thiết phải dùng hết cả k màu (tức là không bắt buộc mỗi màu đều phải có đỉnh mang màu đó).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m là số đỉnh và số cung của đồ thị.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên ai và bi, cho biết cung thứ i đi từ đỉnh ai tới đỉnh bi.

Dữ liệu ra

In ra một số nguyên duy nhất, là số màu lớn nhất k có thể dùng để tô đồ thị (thỏa 1≤k≤n).

Ràng buộc

  • 1≤n,m≤105
  • 1≤ai,bi≤n
  • Cho phép cung lặp và khuyên tự nối.

Ví dụ

Input Output Giải thích
5 2
1 4
2 5
5 Có thể dùng tối đa 5 màu. Chẳng hạn tô đỉnh 1 màu 1 và đỉnh 4 màu 2; đỉnh 2 màu 1 và đỉnh 5 màu 2; đỉnh 3 tô màu bất kỳ.
4 5
1 2
2 3
3 1
2 4
4 1
3 Chu trình 1→2→3→1 có độ dài 3 nên k phải là ước của 3. Với k=3: tô 1,2,3 lần lượt màu 1,2,3 và 4 màu 3.
4 4
1 1
1 2
2 1
1 2
1 Cung khuyên 1→1 đòi hỏi màu đỉnh 1 bằng màu kế tiếp của chính nó, buộc k=1.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0