Phát hiện chu trình
Xem dưới dạng PDF
Gửi bài giải
Điểm:
30
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Kiểu bài tập
Cho một danh sách liên kết đơn gồm N phần tử. Node cuối cùng có thể trỏ đến node thứ K (0-indexed) để tạo thành chu trình (cycle), hoặc trỏ tới NULL nếu K = -1.
Hãy kiểm tra xem danh sách có chu trình hay không bằng thuật toán Floyd's Cycle Detection (tortoise and hare): hai con trỏ chạy với tốc độ khác nhau, nếu gặp nhau thì có cycle.
Đầu vào
- Dòng đầu tiên chứa hai số nguyên N (1 ≤ N ≤ 1000) và K (\(0 ≤ K < N nếu có cycle\), \(K = -1 nếu không\)).
- Dòng thứ hai chứa N số nguyên \(A_i\) (1 ≤ A_i ≤ \(10^3\)).
Đầu ra
In ra YES nếu danh sách có chu trình, NO nếu không.
Ví dụ
Input:
5 2
1 2 3 4 5
Output:
YES
Ràng buộc & Subtasks
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | 30% | Tương ứng với các bộ test có kích thước nhỏ |
| 2 | 70% | Không có ràng buộc gì thêm ngoài định dạng đầu vào |
Nhận xét