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

Đồ Thị Gần Không Chu Trình

Đề bài

Mô tả

Cho một đồ thị có hướng gồm n đỉnh và m cạnh (mỗi cạnh chỉ đi được theo một chiều). Bạn được phép xoá nhiều nhất một cạnh khỏi đồ thị.

Hỏi sau thao tác đó, đồ thị có thể trở thành đồ thị có hướng không chu trình (DAG) hay không? Một đồ thị có hướng được gọi là không chu trình nếu nó không chứa bất kỳ chu trình nào (một đường đi khác rỗng bắt đầu và kết thúc tại cùng một đỉ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 uv (uv), mô tả một cạnh có hướng từ u tới v.

Mỗi cặp có thứ tự (u,v) xuất hiện nhiều nhất một lần (tức là có nhiều nhất một cạnh có hướng từ u tới v).

Dữ liệu ra

In ra YES nếu có thể biến đồ thị thành DAG bằng cách xoá nhiều nhất một cạnh, ngược lại in ra NO.

Ràng buộc

  • 2n500
  • 1mmin(n(n1), 105)
  • 1u,vn, uv

Ví dụ

Input Output Giải thích
3 4
1 2
2 3
3 2
3 1
YES Có hai chu trình: 2321231. Cả hai đều đi qua cạnh 23, nên xoá cạnh này là đủ để đồ thị trở thành DAG.
5 6
1 2
2 3
3 2
3 1
2 1
4 5
NO Đồ thị chứa nhiều chu trình lồng nhau: {2,3}, {1,2,3}. Xoá một cạnh bất kỳ vẫn còn ít nhất một chu trình.

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