Kiểm tra chu trình trên đồ thị có hướng

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài

Cho một đồ thị có hướng gồm N đỉnh (được đánh số từ 1 đến N) và M cung (cạnh có hướng). Một chu trình trên đồ thị có hướng là một đường đi bắt đầu và kết thúc tại cùng một đỉnh, đi qua ít nhất một cạnh và tuân thủ đúng chiều của các mũi tên.

Nhiệm vụ của bạn là viết chương trình kiểm tra xem đồ thị đã cho có chứa ít nhất một chu trình nào hay không.

Dữ liệu vào (Input):

Dòng đầu tiên chứa hai số nguyên dương N và M — số lượng đỉnh và số lượng cung của đồ thị.

M dòng tiếp theo, mỗi dòng chứa hai số nguyên dương u và v (1≤u,v≤N, u≠v) mô tả một cung một chiều xuất phát từ đỉnh u và đi tới đỉnh v.

Dữ liệu ra (Output):

In ra YES nếu đồ thị có chứa chu trình.

In ra NO nếu đồ thị không chứa chu trình nào (đồ thị DAG - Directed Acyclic Graph).

Ràng buộc (Constraints):

1≤N≤1000

1≤M≤10000

Có thể có nhiều thành phần liên thông.

Ví dụ (Sample)

Ví dụ 1:

Input:
5 4
5 1
1 2
2 3
2 4
Output:
NO

Ví dụ 2:

Input:
4 4
1 2
2 3
3 4
4 2
Output:
YES

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.