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